目录
- 一、方法的定义
- 二、方法的声明格式
- 三、方法的调用
- 四、特殊方法:程序入口main方法
- 五、方法的局部变量
- 六、类的静态变量
- 七、类的静态方法
- 八、方法的传参
- 九、方法的重载
一、方法的定义
方法就是 将功能重复的代码封装成一段独立的代码,通过调用方法的方式 (作用)提高代码的复用性(减少代码重复)。
每一个方法只能完成一个功能。
二、方法的声明格式
[修饰符1,修饰符2] 返回值类型 方法名 (参数类型 形式参数1,参数类型 形式参数2,…){
执行语句块; return 返回值;
}
例:
boolean isLeapYear (int year){ //定义方法boolean isLeap = false;if(year%4==0 && year%100 != 0 || year%400 != 0){isLeap = true;}return isLeap;
}
public class MethodDemo01 {//提取一个方法,计算两个数的和并返回public static int addNum(int a,int b){int sum = a +b;return sum;}//提取一个方法,计算三个数的和并打印public static void addNum2(int a,int b,int c){int sum = a +b +c;System.out.println(sum);}public static void main(String[] args) {//调用方法1,计算1+2的和int sum1 = addNum(1,2);System.out.println(sum1);//调用方法1,计算3+4的和System.out.println(addNum(3,4));//调用方法,计算5+6+7的和并打印addNum2(5,6,7);}
}
返回值类型:方法输出数据的类型(如果方法没有返回值,则用关键字void来表示)
方法名:类似变量名,可以自定义方法名(需符合Java标识符规则)
形式参数:变量(用于存储调用方法输入的数据)
实际参数:调用方法输入的数据。
返回值:调用方法返回的数据。
三、方法的调用
int year= 2020;
boolean leapYear =isLeapYear(year); //调用方法
if(leapYear){System.out.println(year +"是闰年!")
}
year = 2052;
leapYear =isLeapYear(year);//调用方法
if(leapYear){System.out.println(year +"是闰年!")
}
四、特殊方法:程序入口main方法
main方法是一个特殊方法,它是Java程序的入口方法,执行Java程序时,JVM会调用main方法。
public static void main (String[]args){}
五、方法的局部变量
局部变量是指在方法中声明的变量,其作用范围仅限于方法中
局部变量使用前必须进行初始化。(定义在main方法中的变量也是局部变量)
boolean isLeapYear (int year){boolean isLeap = false;//声明了一个局部变量并进行初始化if(year%4==0 && year%100 != 0 || year%400 != 0){isLeap = true;}return isLeap;
}
public classA{public static void main (String[]args){int i =6; //整数(实参,局部变量)int [] array = {1,2,3}; //数组(实参,局部变量,传数组的地址)test(i,array);System.out.println(i+""+array[0]);}public static void test(int i,int []array){ //形参i += 3;array[0] += 3;}
}
//输出结果:6 4
六、类的静态变量
静态变量(也称为类变量)是使用static关键字声明的变量,这些变量属于类本身,而不是类的任何特定实例(静态变量在使用前无需初始化。)
public class HellWorld{public static boolean isLeap;//全局变量(默认自动化)public static void method01(){ //isLeap = true;//共享全局变量}public static void method02(){isLeap = true;//共享全局变量}
}
七、类的静态方法
静态方法是使用static关键字定义的方法,静态方法可以访问类的静态变量和静态方法,但不能访问类的实例方法和实例变量。
八、方法的传参
- 实参和形参
实参:调用方法输入的变量或常量值
形参:方法中定义的数据类型变量。
-
值传递
实参将数据传递给形参时,形参的改变改变不影响原实参的值,即值传递只会改变形参,不会改变实参。(基本数据类型) -
引用传递
引用传递:是指在调用函数时,将实际参数的地址传递给函数,这样在函数中对参数的修改,将影响到实际参数。(引用数据类型)
引用数据传递的不是真正的数据地址,是引用的堆内存中的地址,无论引用传递的数据怎么改变,它也只是引用的堆内存中的地址,原数据组的数据地址并没有被改变,改变那部分的值只是形参复制给实参使用的的地址,并不是把原地址改变。
- 总结
在Java中,参数传参本质上只存在值传递。
值传递时,形参改变并不会影响到实参。
在函数中,只有修改了实参所指向的对象内容,也就是引用堆内存中的地址,才会影响到实参
public classA{public static void main (String[]args){int i =6; //整数(实参,局部变量)int [] array = {1,2,3}; //数组(实参,局部变量,传数组的地址)test(i,array);System.out.println(i+""+array[0]);}public static void test(int i,int []array){//形参i += 3;array[0] += 3;}
}
//输出结果:6 4
九、方法的重载
方法的重载指的是在同一个类中,有一个以上的同名方法,但方法的参数个数或参数类型有所不同(与方法的返回值无关)
方法重载是对于 一个类。
public static int addNum(int a,int b){int sum = a +b;return sum;}//提取一个方法,计算三个数的和并打印public static int addNum2(int a,int b,int c){int sum = a +b +c;return sum;}
例如,以下都属于方法的重载
-
void show (int a,char b,double c);
-
void show (int a,double b,char c);
-
void show (int a,int b);
-
void show (int a);
-
double show(int a,char b,double c);