方法:是程序中最小的执行单元,重复的代码、具有独立功能的代码可以抽取到方法中。自动抽取:Ctrl+Shift+M
方法的定义和调用
方法定义:把一些代码打包在一起,该过程称为方法定义。
方法调用:方法定义后并不是直接用还行的,需要手动调用才能执行,该过程称为方法调用。
return关键字:
- 方法没有返回值:可以省略不写。如果书写,表示结束方法。
- 方法由返回值:必须要写。表示结束方法和返回结果。
方法的完整格式:
public static 返回值类型 方法名(参数){
方法体;
return 返回值;
}
注意事项:
- 方法不调用就不执行。
- 方法与方法之间是平级关系,不能互相嵌套。
- 方法的编写顺序与执行顺序无关。
- 方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写。如果要编写return,后面不能跟具体的数据。
- return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。
最简单的方法定义和调用:
//定义格式:
public static void 方法名(){
方法体(就是打包起来的代码);
}
//调用格式: 方法名();
注意:方法必须先定义后调用,否则程序将报错。
带参数的方法定义和调用
//定义格式:
public static void 方法名(参数1,参数2,……){
方法体;
}
//调用格式: 方法名(参数1,参数2,……);
注意:方法调用时,形参和实参必须一一对应,否则程序将报错。
形参:全称形式参数,是指方法定义中的参数。
实参:全称实际参数,是指方法调用中的参数。
带返回值方法的定义和调用
方法的返回值:其实就是方法运行的最终结果。
使用场景:在调用处要根据方法的结果,去编写另外一段代码。
//定义格式:
public static 返回值类型 方法名(参数){
方法体; return 返回值;
}
//调用格式:
//1.直接调用
方法名(实参);
//2.赋值调用
整数类型 变量名 = 方法名(实参);
//3.输出调用
System.out.println(方法名(实参));
方法的重载
- 在同一个类中,定义了多个同名的方法,这些同名的方法具有同种的功能。
- 每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系。
简单记:同一个类中,方法名相同,参数不同的方法。与返回值无关。
参数不同:个数不同、类型不同、顺序不同。
定义重载的方法
//举例:比较两个整数类型的大小(兼容byte,short,int,long)
public static void main(String[] args){
compare((byte)10,(byte)20);
compare(12,13);
}
public static void compare(byte b1 , bytel b2){
System.out.println("byte");
System.out.println(b1 == b2);
}
public static void compare(short s1 , short s2){
System.out.println("short");
System.out.println(s1 == s2);
}
public static void compare(int i1 ,int i2){
System.out.println("int");
System.out.println(i1 == i2);
}
public static void compare(long n1 , long n2){
System.out.printn("long");
System.out.println(n1 == n1);
}
return和break关键字的区别
return:其实跟循环没有什么关系,跟方法有关的,表示结束方法和返回结果。
如果方法执行到了return,那么整个方法全部结束,里面的循环也会随之结束了。
break:其实跟方法没有什么关系,结束循环或者switch的。
方法的内存
方法调用的基本内存原理:先进后出
方法传递基本数据类型原理:
数据值是存储在自己的空间中。
特点:
- 赋值给其他变量。
- 传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值。
方法传递引用数据类型原理(new定义的):
数据值是存储在其他空间中,自己空间中存储的是地址值。
特点:
- 赋值给其他变量,赋的地址值。
- 传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值。