目录
方法
方法是程序中最小的执行单元。
使用方法
重复的代码、具有独立功能的代码可以抽送到方法中。
方法好处
可以提高代码的复用性
可以提高代码的可维护性
方法的格式
方法的定义
把一些代码打包在一起,该过程称为方法定义。
方法的调用
方法定义后并不是直接运行的,需要手动调用才能执行,该过程称为方法调用。
方法的定义格式
public static 返回值类型 方法名 (参数){
方法体;
return 返回值;
}
最简单的方法的定义和调用
方法定义(格式)
public static void 方法名(){
方法体(就是打包起来的代码);
}
方法定义(例子)
public static void playGame(){
打印语句;
}
方法调用(格式)
格式
方法名();
方法调用(例子)
例子
playGame();
注意:方法必须先定义后调用,否则程序将报错。
例子:
package Test;
public class Test22 {
public static void main(String[] args) {
//调用方法
playGame();
}
//定义一个方法
public static void playGame(){
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
}
}
带参数的方法定义和调用
单个参数
格式
public static void 方法名(参数){... ...}
例子
public static void method(int number){... ...}
多个参数
格式
public static void 方法名(参数1,参数2,......){... ...}
例子
public static void getSum(int number, int number2)
{... ...}
带参数方法的调用
单个参数
格式
单个参数:方法名(参数);
例子
metumd(10);
method(变量);
多个参数
格式
多个参数:方法名(参数1,参数2, ... ...);
例子
getSum(10,20);
getSum(变量1,变量2);
注意: 方法调用时,参数的数量与类型必须与方法定义中的小括号里面的变量一一对应,否则程序将报错。
例子
package Test;
public class Test23 {
public static void main(String[] args) {
getSum(10,20);
}
public static void getSum(int num1, int num2){
int result = num1 + num2;
System.out.println(result);//30
}
}
形参和实参
形参:全称形式参数,是指方法定义中的参数。
实参:全称实际参数,方法调用中的参数
package Test;
public class Test23 {
public static void main(String[] args) {
getSum(10,20);//实参
int a = 10;
int b = 10;
getSum(a,b);//实参
}
public static void getSum(int num1, int num2){
int result = num1 + num2;
System.out.println(result);
}
}
// num1, num2 是形参
注意:方法在调用的时候,形参和实参必须一一对应,否则程序将报错。
带返回值方法的定义和调用
方法的返回值其实就是方法运行最终结果。
如果在调用处要根据方法的结果,去编写另一段代码逻辑。为了再调用处拿了方法产生的结果,就需要定义带有返回值的方法。
带返回值方法定义
格式
public static 返回值类型 方法名(参数){
方法体;
return 返回值;
}
例子
public static int getSum(int a, int b){
int c = a + b;
return c;
}
带返回值方法的调用
直接调用
方法名(实参);
赋值调用
整数类型 变量名 = 方法名(实参);
输出调用
System.out.println(方法名(实参));
package Test;
public class Test24 {
public static void main(String[] args) {
//直接调用
getSum(10,20,30);//没有返回值
//赋值调用
int sum = getSum(10,20,30);
System.out.println(sum);//60
//输出调用
System.out.println(getSum(10,20,30));//60
}
public static int getSum(int num1,int num2,int num3){
int result = num1 + num2 + num3;
return result;//返回给方法的调用处
}
}
方法的注意事项
1.方法不调用就不执行
2.方法和方法之间是平级关系,不能相互嵌套
3.方法的编写顺序和执行顺序无关,与它的调用顺序有关。
4.方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略不写。如果要编写return,后面不能具体的数据。
5.return语句的下面,不能编写代码,因为永远执行不到,属于无效的代码。
return关键字
方法没有返回值:可以省略不写。如果书写,表示结束语句。
方法有返回值:必须要写。表示结束方法和返回结果。
方法的重载
在同一个类中,定义了多个同名的方法,这些同名的方法具有同种的功能。(同一个类中,方法名相同,参数不同的方法。与返回值无关)。
每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系。(参数不同:个数不同,类型不同,顺序不同)。
例子
package Test;
public class Test25 {
public static void main(String[] args) {
int sum1 = sum(10,20);
System.out.println(sum1);
int sum2 = sum(10,20,30);
System.out.println(sum2);
}
public static int sum(int a, int b){
return a+b;
}
public static int sum(int a, int b, int c) {
return a+b+c;
}
}
//java虚拟机会根据参数的不同来区分同名的方法
方法的内存
1.方法调用的基本内存原理
方法被调用之后就会进栈执行·
2.方法传递基本数据类型的内存原理
基本数据类型
1.整数类型
2.浮点数类型
3.布尔类型
4.字符类型
在基础数据类型里面变量储存的是真实的数据。
3.方法传递引用数据类型的内存原理
引用数据类型(除了基础数据类型)
只要new出来的全是引用数据类型
引用数据类型中变量中储存的是地址值
引用:使用了其他空间中的数据
从内存的角度去解释:
基本数据类型:数据值是储存在自己的空间中
特点:赋值给其他变量,也是赋真实的值。
引用数据类型:数据值是储存在其他空间中,自己空间中储存的是的地址值。
特点:赋值给其他变量,赋的地址值。
方法传递基本数据类型的内存原理
传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值。
方法传递引用数据类型的内存原理
传递引用的数据类型时,传递的是地址值,形数的改变,影响实际参数的值。
java内存分配
栈 | 方法运行时使用的内存,方法进栈运行,运行完毕就出栈 |
堆 | new出来的,都在堆内存中开辟了一个小空间 |
方法区 | 储存可以运行的class文件 |
本地方法栈 | JVM在使用操作系统的时候使用,和我们开发无关 |
寄存器 | 给CPU使用,和我们开发无关 |