方法的重载
- 在同一个类中定义了多个同名的方法,这些同名的方法具有同种的功能。
- 每个方法具有不同的参数类型或参数个数。这些同名的方法就构成了重载关系。
总结:同一个类中方法名相同,参数不同的方法(形参不同)叫方法的重载,方法的重载与返回值无关
参数不同:个数不同,类型不同,顺序不同
注意:参数的顺序不同可以构成重载,但是不建议
判断方法是否构成重载的条件:
- 在同一个类里面
- 方法名相同
- 形参是不同的
练习:
package com.itheima.Method;
//需求:使用方法重载的思想设计比较两个整数是否相同的方法?
//要求:兼容全整数类型(Byte short int long)
public class Demo10 {
public static void compareNumber(byte b1,short b2){
System.out.println("byte");
System.out.println(b1==b2);
}
public static void compareNumber(short s1,short s2){
System.out.println("short");
System.out.println(s1==s2);
}
public static void compareNumber(int i1,int i2){
System.out.println("int");
System.out.println(i1==i2);
}
public static void compareNumber(long l1,long l2){
System.out.println("long");
System.out.println(l1==l2);
}
public static void main(String[] args) {
compareNumber((byte)5,(byte)8);
compareNumber((short) 10,(short) 20);
compareNumber((int)45,(int)21);
compareNumber((long)126,(long)45);
}
}
运行结果:
byte
false
short
false
int
false
long
false
方法的练习
练习1:
package com.itheima.Method;
//需求:设计一个方法用于数组遍历,要求便利的结果是在一行上的
public class Demo11Test01 {
public static void Arr(double[] arr){
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i== arr.length-1){
System.out.print(arr[i]);
}else {
System.out.print(arr[i]+", ");//当i!=数组长度时打印输出数组元素再加一个逗号
}
}
System.out.println("]");
}
public static void main(String[] args) {
double[] arr = {11,22,33,44,55};
Arr(arr);
}
}
运行结果:
[11.0, 22.0, 33.0, 44.0, 55.0]
练习2:
package com.itheima.Method;
//需求:设计一个方法,求数组的最大值,并将最大值返回
public class Demo11Test02 {
public static int getMax(int[] arr) {
int max =arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i]>max){
max = arr[i];
}
}
return max;
}
public static void main(String[] args) {
int[] arr = {45,23,51,67,82,03};
int max = getMax(arr);
System.out.println(max);
}
}
运行结果:
82
练习3:
package com.itheima.Method;
//定义一个方法,判断数组中的某一个数是否存在将结果返回给调用处。
public class Demo11Test03 {
public static boolean contains(int[] arr,int number) {
for (int i = 0; i < arr.length; i++) {
if (number == arr[i]) {
return true;
}
}
return false;
}
public static void main(String[] args) {
int[] arr = {11, 22, 33, 44, 55};
boolean c = contains(arr,33);
System.out.println(c);
}
}
运行结果:
true
练习4:
package com.itheima.Method;
//需求:定义一个方法copyOfRange(int[],int from,int to)
//功能:将数组arr中从索引from(包含from)开始到索引to结束(不包含to)的元素复复新数组中,将新数组返回
public class Demo11Test04 {
public static int[] copyOfRange(int[] arr,int from,int to) {
//1、定义的数组
int[] newArr = new int[to-from];
//把原始数组arr中的from到to上对应的元素,直接拷贝到newArray中
//伪造一个索引
int index = 0;
for (int i = from; i < to; i++) {
newArr[index] = arr[i];
index++;
}
return newArr;
}
public static void main(String[] args) {
//1、定义原始数组
int[] arr = {11,22,33,44,55,66};
//2、调用方法拷贝数据
int[] copyArr = copyOfRange(arr,1,4);
//3、遍历copyArr
for (int i = 0; i < copyArr.length; i++) {
System.out.print(copyArr[i]+" ");
}
}
}
运行结果:
22 33 44