方法的概念
方法就是将功能重复的代码封装成一段独立的小程序,通过调用方法的方式以提高代码的复用性(减少代码重复)
int year = 2020;
if ( year % 4 == 0 &&
year % 100 != 0 || year % 400 == 0) {
System.out.println(year + "是闰年!");
}
year = 2052;
if ( year % 4 == 0 &&
year % 100 != 0 || year % 400 == 0) {
System.out.println(year + "是闰年!");
}
当需要判断两个年份是否为闰年时,以上代码存在代码重复。
方法的定义
返回值类型 方法名 (参数类型 形式参数1,参数类型 形式参数2,…) {
执行语句块;
return 返回值;
}
返回值类型: 方法输出数据的类型(如果方法没有返回值,则用关键字 void 来表示)
方法名:类似变量名,可以自定义方法名(需符合 Java 标识符规则)
形式参数:变量(用于存储调用方法输入的数据)
实际参数:调用方法输入的数据
返回值:调用方法返回的数据
注意:main 方法是一个特殊方法,它是程序的入口方法,执行程序时会 JVM 会调用 main 方法。
案例
获取 2 个整数中的较大的数
public static int getMax(int left, int right) {
int max = 0;
if (left > right) {
max = left;
} else {
max = right;
}
return max;
}
方法的调用
方法中可以调用其他方法
方法中不能嵌套定义方法
int numA = 20;
int numB = 30;
int max = getMax(numA, numB); //调用定义的 getMax 方法,并将返回值赋给 max 变量
局部变量
局部变量指在方法中声明的变量,其作用范围仅限于方法中(局部变量在使用前必须进行初始化)
局部变量的特点
生存时间:局部变量的生存时间和方法的生存时间一致,调用该方法声明该局部变量并初始化的时,该局部变量被创建并分配内存空间;直到该方法调用结束局部变量也就结束
是否需要初始化:局部变量在使用前必须进行初始化,系统默认不会对局部变量进行初始化数据操作,如果局部变量在使用前没有进行初始化则会在编译器报错;如果局部变量进行了声明没有进行初始化, 但是也一直没有被使用的话编译也是不会报错的
创建位置: 局部变量是创建在内存的栈区中
注意:main 方法也是方法,所以定义在 main 方法中的变量也是局部变量
形参与实参
形参:方法中定义的数据类型变量
实参:调用方法输入的变量或常量值
形参与实参是具有相同数据类型的不同变量,都存储于内存的栈区
内存划分
Java 内存划分区域:
栈区:变量(基本类型变量和引用类型变量)
堆区:对象(new 引用类型)
注意:内存划分为不同的区域,目的是便于数据的存储,提高同一类型数据的存取效率
方法的重载
方法的重载指的是在同一个类中,有一个以上的同名方法,但方法的参数个数或参数类型有所不同(与方法的返回值无关)
方法的重载存在的原因:为了增强方法的阅读性,优化程序设计