第五天 方法
定义
- 方法是java中使代码可以进行复用的一个“办法“
如果没有方法,会出现什么问题?
- 代码无法得到复用(Java的方法类似于Python的函数)
没有方法的代码如下
public class Test01 {
public static void main(String[] args) {
//需求一:计算 123 与 312的和
int a = 123;
int b = 312;
int c = a + b;
System.out.println(a + "+" + b + "=" + c);
//需求二:计算 999 与 123的和
int i = 999;
int j = 123;
int k = i + j;
System.out.println(i + "+" + b + "=" + k);
//可以发现,需求一和需求二是本质是一样的,仅仅是数据不同而已,
//但是没有方法,就需要重复的去定义变量,再做加法
}
}
代码的执行顺序
*** 注***
* 方法定义在类体中
* 方法定义的先后顺序是都可以的
* 自上而下的顺序逐行执行
* 程序开始的时候都是先执行main方法的,因为main方法是一个入口(就目前而言)
* 但是需要注意的Java程序中除了main方法是由JVM(Java虚拟机)调用,其他的方法都需要程序员手动调用,如果不调用就不会执行
上述代码使用方法后
public class Test02 {
public static void sumInt(int a, int b){
int c = a + b;
System.out.println(a + "+" + b + "=" + c);
}
public static void main(String[] args) {
//与Test01一样的两个需求
sumInt(123,312);
sumInt(999,123);
}
}
方法的语法机制组成
[修饰符列表] 返回值类型 方法名(形式参数列表) { 方法体 }
修饰符列表
- 不是必写项,是可选的
- 目前暂时均写成:public static
返回值类型
- 返回值类型是可选的
- 也可以为空
- 返回值的数据类型和接收该值的变量的数据类型必须一致
注
- 返回值类型可以是所有Java中合法的数据类型(包括基本数据类型和引用数据类型)
- 当一个方法执行结束,不返回任何值的时候,返回值类型也不能为空白,要使用 void 关键字
- 如果有返回值,则必须要使用 return 关键字,来完成值的返回,否则就会报错
- 只要 return 关键字的语句执行,当前方法马上结束,所以return语句下面不能有其他的Java语句,不然也会报错
- 若返回值类型是void,则方法体中不能 return,但是能有 return; 来表示方法的终止
返回值
- 定义:一般是一个方法执行结束后的结果
方法名
- 见名知意
- 方法名的命名规范:首字母小写,后面每个单词首字母大写
方法体
- 由Java语句构成
- Java语句以分号结尾
- 方法体中编写的是业务逻辑代码,从而来达到完成特定功能的目的
- 方法体中的代码需要的数据来自形参
形式参数列表
- 简称:形参
- 形式参数列表中的每一个参数都是局部变量(方法结束后释放内存)
- 形参个数有0~N个
- 如果形参有多个的话,使用逗号隔开
- 起绝对性作用的是:形参的数据类型
方法的调用
- 语法:类名 . 方法名(实际参数列表);
注
- 调用方法的时候,实参和形参的数据类型必须要一一对应
public class Test03 {
public static void main(String[] args) {
int a = Test03.devison(100,2);
System.out.println(a);
//跨代码调用方法
Test02.sumInt(10,20);
}
public static int devison(int x, int y){
int z = x / y;
return z;
}
}
接受返回值
- 没有返回值的方法,变量不能接受
- 因为默认是void类型,返回的不是该类型,就会报错:不兼容类型
- 当一个方法有返回值的时候,也可以选择不要
- 但是这样做没有意义,因为一般程序返回了执行结果,都是需要接收并使用该结果
- 虽然没有变量接收该返回值,但是不代表这个返回值没有返回,只是在返回后其内存马上释放了
- 返回值只能有一个
实际参数列表
- 定义:实参就是调用方法时传递的实际数据
调用方法时类名的省略
- 在方法调用的时候,在同一个类的时候,可以省略;跨类调用的时候需要加上 类名.
public class Test04 {
public static void main(String[] args) {
//本类调用方法
println();
//跨类调用方法
Myclass.