第12节方法重载&方法参数
方法重载概述
//两个数据求和方法 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; }
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法互相构成重载
- 多个方法在同一个类中
- 多个方法具有相同的方法名
- 多个方法的参数不相同,类型不同或者数量不同
方法重载特点
- 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
- 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载
package com.itheima_01; public class MethodDemo07 { public static void main(String[] args) { //需求1: System.out.println(getSum(10,20)); //需求2: double sum; sum=getSum(13.14,5.2); System.out.println(sum); //需求3: System.out.println(getSum(10,20,30)); } //需求1:求两个int类型数据和的方法 public static int getSum(int num1,int num2){ return num1+num2; } //需求2:求两个double类型数据和的方法 public static double getSum(double num1,double num2){ return num1+num2; } //需求3:求三个int类型数据和的方法 public static int getSum(int num1,int num2,int num3){ return num1+num2+num3; } }
方法重载练习
需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)
package com.itheima_01; public class MethodDemo08 { public static void main(String[] args) { getNumber(10,20); getNumber(1,1); getNumber(15698,15698); getNumber(20,22); } //需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long) public static void getNumber(byte num1,byte num2){ if(num1==num2){ System.out.println("相等"); }else{ System.out.println("不相等"); } } public static void getNumber(short num1,short num2){ if(num1==num2){ System.out.println("相等"); }else{ System.out.println("不相等"); } } public static void getNumber(long num1,long num2){ if(num1==num2){ System.out.println("相等"); }else{ System.out.println("不相等"); } } public static void getNumber(int num1,int num2){ if(num1==num2){ System.out.println("相等"); }else{ System.out.println("不相等"); } } }
思路:
1、定义比较两个数字的是否相同的方法getNumber()方法,参数选中两个int型参数
2、定义对应的重载方法,变更对应的参数类型,参数变更为两个long型参数
3、定义所有的重载方法,两个byte类型与两个short类型参数
4、完成方法的调用,测试运行结果
package com.itheima_01; public class MethodDemo08 { public static void main(String[] args) { boolean _int= getNumber(10,20); boolean _short= getNumber((short) 1,(short)1); boolean _long= getNumber((long)15698,(long)15698); boolean _byte= getNumber((byte)20,(byte)22); System.out.println(""+_int+_short+_long+_byte); } //需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long) public static boolean getNumber(byte num1,byte num2){ System.out.println("byte"); return num1==num2; } public static boolean getNumber(short num1,short num2){ System.out.println("short"); return num1==num2; } public static boolean getNumber(long num1,long num2){ System.out.println("long"); return num1==num2; } public static boolean getNumber(int num1,int num2){ System.out.println("int"); return num1==num2; } }
getNumber(15698L,15698L);//表示long类型可以在数据后面直接加L就可以了。
方法的参数传递
方法参数传递(基本类型)
对于基本数据类型的参数,形式参数的改变,不影响实际参数的值
package com.itheima_01; public class MethodDemo09 { public static void main(String[] args) { int number=100; System.out.println("调用change方法前"+number); change(number); System.out.println("调用change方法后"+number); } public static void change(int number){ number=200; } }
输出结果:
调用change方法前100
调用change方法后100
方法参数传递(引用类型)
对于引用类型的参数,形式参数的改变,影响实际参数的值
package com.itheima_01; public class MethodDemo10 { public static void main(String[] args) { int[] arr={10,20,30}; System.out.println("调用change方法前"+arr[1]); change(arr); System.out.println("调用change方法后"+arr[1]); } public static void change(int[] arr){ arr[1]=200; } }
输出结果:
调用change方法前20
调用change方法后200

浙公网安备 33010602011771号