对象的行为 -- 方法
[toc]
本章第二节我们讲了类的定义和实例化。 在类的定义中我们提到了方法的概念。方法是类或者对象的行为。
一 System类out对象的print方法
在前面几个章节中我们经常使用到 System.out.println()
,那么它是什么呢?
- println() 是一个方法。做打印内容的行为。
- System 是系统类。里面定义了很多系统相关的属性,行为。
- out 是标准输出对象。专门用来打印输入到控制台的对象。
这句话的用法是调用系统类 System 中的标准输出对象 out 中的方法 println()
打印。
二 方法概念
Java方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
三 方法的优点
- 使程序变得更简短而清晰。
- 有利于程序维护。
- 可以提高程序开发的效率。
- 提高了代码的重用性。
四 方法的定义
一般情况下,定义一个实例方法包含以下语法:
public class 类名{
//有返回值的方法
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体 -- 代码
...
return 返回值;
}
//或者没有返回值的方法
修饰符 void 方法名(参数类型 参数名){
...
方法体 -- 代码
...
}
}
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
- 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
- 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
- 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
- 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。多个参数可以用逗号隔开。
- 方法体:方法体包含具体的语句,定义该方法的功能。
修饰符后面会讲,常用的修饰符有public,static,final等。
public class Function {
public void doSomething(){
System.out.println("这是无返回值的方法,也没有参数,方法里可以写各种代码。");
}
public void doSomethingA(String strValue){
System.out.println("这是无返回值的方法,有参数,方法里可以写各种代码。Value: "+strValue);
}
public int add(int a, int b){ //多个参数用逗号隔开
System.out.println("这是有返回值的方法,有参数,方法里可以写各种代码。返回两个数的和。");
return a + b;
}
public static void main(String[] args) {
Function function = new Function();
function.doSomething();
function.doSomethingA("传入一个String。");
int result = function.add(1, 3); //当方法返回一个值的时候,方法调用的返回值通常赋给一个新的变量。
System.out.println("打印出两个值相加的结果:"+result);
System.out.println("也可以简写成这样的方式,看需要决定。"+function.add(1, 3));
}
}
五 静态方法
当方法被static修饰,方法就是静态方法。静态方法,不需要类实例化,就可以直接调用。也叫做类方法。
实例方法产生的行为一般都和对象的属性有关。而有些方法,为了提高代码重用,同时又不依赖实例对象的属性,就可以写成静态方法。看代码需要决定。
public class FunctionStatic {
public static int addStatic(int a, int b){ //多个参数用逗号隔开
System.out.println("这是有返回值的静态方法,有参数,外部可以直接调用该方法,无需实例化。");
return a + b;
}
public static void doSomethingStatic(){
System.out.println("这是无返回值的静态方法,也没有参数,方法里可以写各种代码。");
}
public static void main(String[] args) {
System.out.println("-----调用静态方法-----------------------------------------------------");
System.out.println("直接调用静态方法,打印出两个值相加的结果:"+ FunctionStatic.addStatic(2,4));
FunctionStatic.doSomethingStatic();//直接调用静态方法,无需实例化。
}
}
六 方法的实战
打开wx读书首页,点击排行榜里的任意一本书,比如点开《红楼梦》,打开链接为 红楼梦简介
如下图标记1,2,3:
标记1: 书内容介绍
标记2: 评分,评分人数
标记3: 阅读次数的人数
6.1 引入新的变量和方法
引入如下变量,简介,总阅读数,总评论数,平均分。同时增加方法增加阅读和评论总数。
public class Book {
String name; //书名,类型为字符串String,默认值为null
String author; //作者,类型为字符串String,默认值为null
int rank; //排名,类型为整型int,默认值为0
String brief;//书名简介 , 类型为字符串String
int totalRead;//本书总阅读人数, 类型为整型 int, 默认值为0
int totalComment; //本书总评价数, 类型为整型 int
double score; //本书平均评分 ,类型为小数, double类型。
public int addRead(){//当有新用户阅读时,就给阅读数加一。并返回最新的数量
totalRead = totalRead + 1;
return totalRead;
}
public int addComment(){//当有新评论时,评论数加一。并返回最新的数量
totalComment = totalComment + 1;
return totalComment;
}
public static void main(String[] args) {
Book hongLouMeng = new Book();
System.out.println("----------------从数据库读取出这些数据,并初始化赋值.------------");
hongLouMeng.name = "红楼梦";
hongLouMeng.author = "曹雪芹";
hongLouMeng.rank = 5;
hongLouMeng.brief = "《红楼梦》又名《石头记》,是中国古典小说的巅峰之作,位居“中国古典四大名著”之首。...";
hongLouMeng.totalRead = 652000;
hongLouMeng.totalComment = 31000;
hongLouMeng.score = 8.9;
System.out.println("----------------返回到前端浏览器,这里我们暂时忽略其它元素,比如评论内容,图片等.------------");
System.out.println("------前端浏览器,有新用户阅读本书,就会发送请求,让阅读数加一.因为这个行为动作总是加一,所以方法就不传入参数了.------------");
int read = hongLouMeng.addRead();
System.out.println("-----返回最新的阅读数给浏览器,同时将最新的数据保存到数据库中,readTotal:"+read);
//同样的,当有用户评论时,调用addComment()方法
System.out.println("-----返回最新的阅读数给浏览器,同时将最新的数据保存到数据库中,commentTotal:"+hongLouMeng.addComment());
//这里我们暂时先不处理评分计算,以及用户评论内容保存,以后章节处理.
}
}
由此可以看出,调用方法,可以重用方法里面的代码,不再需要重复写。
文章和项目开源地址
一起学习,最简单易懂的Java零基础入门,答疑解惑,关注点赞github
开源:https://github.com/BradYan/easy-java