方法
方法的概念
-
什么是方法
方法时程序中最小的执行单元
-
实际开发中,什么时候用到方法
重复的代码、具有独立功能的代码可以抽取到方法中
-
实际开发中,方法有什么好处
- 可以提高代码的复用性
- 可以提高代码的可维护性
方法的格式
把一些代码打包在一起,用到的时候就调用
- 方法定义
把一些代码打包在一起,该过程成为方法定义。
- 方法调用
方法定义后并不是直接运行的,需要手动调用才能执行,该过程成为方法调用
方法的定义格式
1.最简单的方法定义和调用
- 定义
格式:
public static void 方法名(){
方法体(打包起来的代码);
}
范例:
public static void playGame(){
七个打印语句;
}
- 调用
格式:
方法名()
范例:
playGame();
2.带参数的方法定义和调用
- 单个参数
格式:
public static void 方法名(数据类型 变量名){
方法体(打包起来的代码);
}
范例:
public static void playGame(int num1, String str){
方法体(打包起来的代码);
}
- 多个参数
格式:
public static void getSum(数据类型 变量名,数据类型 变量名,....){
方法体(打包起来的代码);
}
范例:
public static void getSum(int num1,int num2,,....){
方法体(打包起来的代码);
}
- 形参和实参
- 形参:全称形式参数,是指方法定义中的参数
- 实参:全称实际参数,是指方法调用中的参数
方法调用的时候,形参和实参必须一一对应,否则程序将会报错。
3.带返回值方法的定义和调用
方法的返回值其实就是方法运行的最终结果。如果在调用出要根据方法的结果去编写另外一段代码逻辑,为了在调用处拿到方法产生的结果,就需要定义带有返回值的方法。
- 定义
格式:
public static 返回值类型 方法名(参数列表){
方法体;
return 返回值;
}
范例:
public static int sum(int a, int b){
int c = a + b ;
return c ;
}
- 调用
-
直接调用:
方法名(实参);
-
赋值调用:
数据类型 变量名 = 方法名(实参);
-
输出调用:
System.out.println(方法名(实参));
-
4. return 关键字
- 方法没有返回值:可以省略不写。如果书写,表示结束方法
- 方法有返回值:必须要写。表示结束方法和返回结果。
方法的注意事项
- 方法不调用就不执行
- 方法与方法之间是平级关系,不能互相嵌套定义
- 方法的编写顺序和执行顺序无关
- 方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return不写,如果要写return,后面不能跟具体的数据。
- return语句下面不能编写代码,因为永远执行不到,属于无效的代码。
方法的重载
- 在同一个垒中,定义了多个同名的方法,这些同名的方法具有各种的功能
- 每个方法具有不同的参数类型或者参数个数,这些同名的方法就构成了重载关系
- 同一个类中,方法名相同,参数不同的方法,与返回值无关
- 参数不同:个数不同、类型不同、顺序不同
方法的内存
方法调用的基本内存原理
Java你内存分配
- 栈:方法运行时使用的内存,方法进栈运行,运行完毕出栈(先进后出,先调用后结束)
- 堆:new出来的,都在堆内存中开辟了一个小空间
- 方法区:存储可以运行的class文件
- 本地方法栈:JVM在使用操作系统功能的时候使用
- 寄存器:给CPU使用
基本数据类型和引用数据类型
-
基本数据类型:四类八种,里面存储的是真实的数据,数据值存储在自己的空间中
- 整数类型
- 浮点数类型
- 布尔类型
- 字符类型
-
引用数据类型
除了基本数据类型的其他所有类型,new出来的都是引用数据类型,里面存储的是地址值,数据值存储在其他空间中
方法传递基本数据类型的内存原理
-
基本数据类型
方法传递基本数据类型的时候传递的是真实的数据,形参的改变并不会影响实参的数据
-
引用数据类型
方法传递引用数据类型的时候传递的是地址值,形参的改变也会影响实参的数据。