第七章 方法
1.1 方法的引入
/*
对于一个java程序员来说,如果没有“方法”,会存在什么问题?
代码无法得到复用。(怎么提高复用性,可以定义方法,然后需要使用该功能的时候,直接调用一下方法即可,这样代码就可以得到复用了)
*/
public class MethodTest01{
public static void main(String[] args){
// 需求1:请编写程序,计算100和200的求和。
int x = 100;
int y = 200;
int z = x + y;
System.out.println(x + "+" + y + "=" + z);
// 需求2:请编写程序,计算666和888的求和。
// 这个要求2实际上和需要1是完全相同的,只不守具体求和时的数据不同。
int a = 666;
int b = 888;
int c = a + b;
System.out.println(a + "+" + b + "=" + c);
// 需求3:请编写程序,计算111和222的和
int m = 111;
int n = 222;
int k = m + n;
System.out.println(m + "+" + n + "=" + k);
/*
需求1和需求2本质上相同,只不过参与运算的数值不同,
代码编写了三份,显然代码没有得到重复复用,专业术语叫做“复用性”差。
功能/业务逻辑相同,为什么要重复编写代码,代码能不能写一次,以后要是需要再次使用该“业务/需求”的时候,直接调用就可以了。。
如果想达到代码复用,那么需要学习java语言中的方法机制。
*/
}
}
1.2 体验方法的作用
什么是方法,有什么用?
方法(method)
方法是可以完成某个特定功能的并且可以被重复复用的代码片段。
在c语言中,方法被称为“函数”,在java中不叫函数,叫做方法。
你定义了一个/抽取了一个方法出来,而这个方法确无法完成某个功能,那么你抽取的这个方法毫无意义。一般一个方法就是一个"功能单元"。假设在以后的开发中,某个功能是可以独立抽取出来的,建议定义为方法,这样以后只要需要这个功能,那么直接调用这个方法即可,而不需要重复编写业务逻辑代码。
/*
这个程序是体验程序,体验一下方法的好处。
注意:
程序开始执行的时候是先执行main方法
因为main方法是一个入口。
在java语言中所有的方法体中的代码都必须遵循自上而下的顺序依次逐行执行。
main方法不需要程序员手动调用,是由JVM调用的。
但是除了main方法之外其他的方法,都需要程序员手动调用,方法只有调用的时候才会执行,方法不调用是不会执行方法里面的代码的。
*/
public class MethodTest02{
// 方法定义在类体当中。
// 方法定义的先后顺序没有关系,都可以。
/*
public static void sumInt(int x, int y){
int z = x + y;
System.out.println(x + "+" + y + "=" + z);
}
*/
// 主方法,入口
public static void main(String[] args){
// 需求1:请编写程序,计算100和200的和。
sumInt(100, 200);
// 需求2:请编写程序,计算666和888的和。
sumInt(666, 888);
// 需求3:请编写程序,计算111和222的和。
sumInt(111, 222);
}
// 专门在这个类体中定义一个方法,这个方法专门来完成求和。
// x y z在以下的sumInt方法中属于局部变量
// 局部变量有且个特点:方法结束之后,局部变量占用的内存会自动释放。
public static void sumInt(int x, int y){
int z = x + y;
System.out.println(x + "+" + y + "=" + z);
}
}
1.3 方法的语法机制
1、方法怎么定义,语法机制是什么?
[修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
注意:
[] 这个符号叫做中括号,以上中括号[]里面的内容表示不是必须的,是可选的。
方法体由Java语句构成。
方法定义之后需要去调用,不调用是不会执行的。
1.1、关于修饰符列表:
修饰符列表不是必选项,是可选的,目前为止,大写统一写成:public static
1.2、关于返回值类型:
第一:返回值类型可以是任何类型,只要是java中合法的数据类型即可,数据类型包括基本数据类型和引用数据类型。
第二:什么是返回值?
返回值一般指的是一个方法执行结束之后的结果,结果通常是一个数据,所以被称为“值”,而且还叫“返回值” 。
方法就是为了完成某个特定的功能,方法结束之后大部分情况下都是有一个结果的,而体现结果的一般都是数据,数据得有类型,这就是返回值类型。
main{
// 调用a方法
a(); 如果a方法执行结束之后有返回值,这个返回值返回给main了
}
a(){}
方法执行结束之后的返回值实际上是给调用者了,谁调用就返回给谁。
第三:当一个方法执行结束不返回任何值的时候,返回值类型也不能空白,必须写上void关键字。所以void表示该方法执行结束后不返回任何结果。
第四:
如果返回值类型那里写的不是void,那么你在方法体执行结束的时候必须使用"return 值;"这样的语句来完成“值”的返回,如果没有没有返回“值”编译器会报错
return 值; 这样的语句的作用是什么?作用是“返回值”
第五:只要有“return”关键字的语句执行,当前方法必然结束。
第六:
如果返回值类型那里写的是void,那么在方法体当中不能有“return 值;”这样的java语句。
但是可以有“return;”语句。这个语句“return;”的作用是终止当前方法的。
第七:除了void之外,剩下的都必须有“return 值;”这样的语句。
1.3、方法名
方法名要见名知意。
方法名在标识符命名规范当中,要求首字母小写,后面每个单词首字母大写。
只要是合法的标识符即可。
1.4、形式参数列表
简称:形参
注意:形式参数列表中的每一个参数都是“局部变量”,方法结束之后内存释放。
形参的个数是:0~N个。
public static void sumInt(){}
public static void sumInt(int x){}
public static void sumInt(int x, int y){}
public static void sumInt(int x, int y, double z){}
形参有多个的话使用“逗号,”隔开。
形参的数据类型起决定性作用,形参对应的变量名是随意的。