方法重载
目标:能够理解方法重载的概念,好处
没有方法重载时的问题:
假设我们要设计一个计算器软件
两个int相加 三个int相加
当没有方法重载时多个相同的功能需要不同方法名.使用很麻烦
一、什么是方法重载
同一个类中出现了多个同名的方法,这些同名的方式是重载的方法
二、使用要求及其使用
1.方法重载的要求
1.同一个类中
2.方法名相同
3.参数列表不同
3.1 参数个数不同
3.2 类型不同
3.3 顺序不同
2.方法重载的使用
public class Demo022 {
public static void main(String[] args) {
System.out.println(compare((byte)1, (byte)2));
System.out.println(compare((short) 2, (short) 6));
System.out.println(compare(3, 8));
System.out.println(compare(3L, 8L));
}
// 比较byte是否相同, 相同true, 不相同false
public static boolean compare(byte b1, byte b2) {
/*if (b1 == b2) {
return true;
} else {
return false;
}*/
return b1 == b2;
}
// 比较short是否相同
public static boolean compare(short s1, short s2) {
return s1 == s2;
}
// 比较int是否相同
public static boolean compare(int i1, int i2) {
return i1 == i2;
}
// 比较long是否相同
public static boolean compare(long l1, long l2) {
return l1 == l2;
}
}
3.判断哪些方法是重载关系
方法重载3个要求: 两同一不同
1.同一个类中
2.方法名相同
3.参数列表不同
方法重载和修饰符,返回值类型无关
代码示例:
public class Demo023 {
public static void open(){}
public static void open(int a){}
static void open(int a,int b){}
public static void open(double a,int b){}
public static void open(int a,double b){}
// public static void open(int i,double d){} // 和上一个方法是重复的.参数列表相同啦,参数列表看类型.不看变量名
// public void open(int i,double d){} // 和上一个方法是重复的.参数列表相同啦
// public static void OPEN(){} // 方法名不同,不是重载
}
三.方法定义的练习(复习)
1.设计一个方法用于数组遍历
需求:
设计一个方法用于数组遍历,要求遍历的结果是在一行上的。
定义方法两个明确:
1.明确返回值类型,就是结果的类型, 遍历打印结果.不需要返回值
2.明确参数列表,方法中的未知数据 参数列表(int[] arr)
传递引用数据类型,引用传递(传递地址)
代码:
public class Demo031 {
public static void main(String[] args) {
// 0 1 2 3 4
int[] arr = new int[] {11, 22, 33, 44, 55}; // 数组的长度是5,最大索引是4, 最大索引是长度-1
// arr.length(5) - 1 = 最大索引(4)
printArray(arr);
printArray(arr);
}
// 打印数组内容的方法, a也是指向传递进来的数组 [11, 22, 33, 44, 55]
public static void printArray(int[] a) {
// 1.打印[
System.out.print("[");
// 2.遍历数组获取每个元素
for (int i = 0; i < a.length; i++) {
// i = 0 a[0] 11,
// i = 1 a[1] 22,
// i = 2 a[2] 33,
// i = 3 a[3] 44,
// i = 4 a[4] 55]
// 3.如果是最后一个元素,打印 元素]
if (i == a.length - 1) {
System.out.println(a[i] + "]"); // println 先打印内容,后换行
} else {
// 4.如果是不是最后一个元素,打印 元素,
System.out.print(a[i] + ", ");
}
}
}
}
2.设计一个方法用于获取数组中元素的最大值
定义方法2个明确:
1.明确返回值类型: 返回数组的最大值, 返回值类型 int
2.明确参数列表: 获取哪个数组的最大值,不确定, 参数列表: (int[] a)
代码:
public class Demo032 {
public static void main(String[] args) {
int[] arr = new int[] {8, 9, 1, 3, 2, 6};
int x = getMax(arr);
System.out.println("数组最大值为: " + x);
}
public static int getMax(int[] a) {
// 1.定义一个变量保存较大值,这个变量默认值为数组0索引的数据
int max = a[0]; // 8
// 2.遍历数组获取每个元素
for (int i = 1; i < a.length; i++) {
// 3.将遍历出的数据和变量比较
// 如果遍历出的数据大于变量, 将大的值赋值变量
if (a[i] > max) {
max = a[i];
}
}
// 返回最大值
return max;
}
}