详解方法的重载
方法重載
對于功能類似的方法來說,因為參數列表不一樣,卻要記住那么多不同的方法名稱,太麻煩
方法的重載(Overload):在同一個類中定義的多個方法的名稱一樣,但是參數列表不一樣
好處:只需要記住唯一的一個方法名稱,就可以實現類似的多個功能
方法重載與下列因素有關:
1、參數個數不同
2、參數類型不同
3、參數的多類型順序不同
方法重載與下列因素無關:
1、與參數的名稱無關
2、與方法的返回值類型無關
例一、比較兩個數據是否相等
參數類型分別為兩個byte類型,兩個short類型,兩個int類型,兩個long類型,并在main方法中進行測試
public class Demo02MethodOverloadSame {public static void main(String[] args) {byte a = 10;byte b = 20;System.out.println(isSame(a,b));System.out.println(isSame(10,20));System.out.println(isSame(10L,10L));System.out.println(isSame((short) 20,(short) 20));}public static boolean isSame(byte a,byte b){System.out.println("兩個byte參數的方法執行!");boolean same;if(a==b){same=true;}else {same=false;}return same;}public static boolean isSame(short a,short b){System.out.println("兩個short參數的方法執行!");boolean same = a==b?true:false;return same;}public static boolean isSame(int a,int b){System.out.println("兩個int參數的方法執行!");return a==b;}public static boolean isSame(long a,long b){System.out.println("兩個long參數的方法執行!");if (a==b){return true;}else {return false;}} }例二、判斷方法的正確
public class Demo03OverloadJudge {public static void open(){}//正確重載public static void open(int a){}//正確重載public void open(int a,int b){}//代碼錯誤,和第9行沖突public static void open(double a,int b){}//正確重載public static void open(int a ,double b){}//代碼錯誤,和第7行沖突public void open(int i,double d){}//代碼錯誤,和第6行沖突public static void OPEN(){}//代碼不會報錯,但是并不是有效重載public static void open(int i,int j){}//代碼錯誤,和第4行沖突例三、實現方法重載的Println
/* *byte short int long float double char boolean * String * 在調用輸出語句時,println方法其實就是進行了多種類型的重載形式*/ public class Demo04OverloadPrint {public static void main(String[] args) {myPrint(10);//intmyPrint("hello");//String}public static void myPrint(byte num){System.out.println(num);}public static void myPrint(short num){System.out.println(num);}public static void myPrint(int num){System.out.println(num);}public static void myPrint(long num){System.out.println(num);}public static void myPrint(float num){System.out.println(num);}public static void myPrint(double num){System.out.println(num);}public static void myPrint(char zifu){System.out.println(zifu);}public static void myPrint(boolean is){System.out.println(is);}public static void myPrint(String str){System.out.println(str);} }方法參數傳遞基本類型
public class ArgsDemo01 {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;} }基本數據類型的參數,形式參數的改變,不影響實際參數。每個方法在棧內存中,都會有獨立的棧空間,方法運行結束后就會彈棧消失
方法參數傳遞引用類型
public class ArgsDemo02 {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;} }
對應引用類型的參數,形式參數的改變,影響實際參數的值。引用數據類型的傳參,傳入的是地址值,內存中會造成兩個引用指向同一個內存的效果,所以即使方法彈棧,堆內存中的數據也已經是改變后的結果。
數組遍歷
設計一個方法用于數組遍歷,要求遍歷的結果是在一行上的。例如:[11,23,44,55,66]
public class MethodTest01 {public static void main(String[] args) {//定義一個數組,用靜態初始化完成數組元素初始化int[] arr = {11, 22, 33, 44, 55};//調用方法printArray(arr);}//定義一個方法,用數組遍歷通用格式對數組進行遍歷/*兩個明確:返回值類型:void參數:int[] arr*/public static void printArray(int[] arr) {System.out.print("[");for(int x=0; x<arr.length; x++) {if(x == arr.length-1) {System.out.print(arr[x]);} else {System.out.print(arr[x]+", ");}}System.out.println("]");} }數組最大值
設計一個方法用于獲取數組中元素的最大值
public class MethodTest02 {public static void main(String[] args) {//定義一個數組,用靜態初始化完成數組元素初始化int[] arr = {12, 45, 98, 73, 60};//調用獲取最大值方法,用變量接收返回結果int number = getMax(arr);//把結果輸出在控制臺System.out.println("number:" + number);}//定義一個方法,用來獲取數組中的最大值/*兩個明確:返回值類型:int參數:int[] arr*/public static int getMax(int[] arr) {int max = arr[0];for(int x=1; x<arr.length; x++) {if(arr[x] > max) {max = arr[x];}}return max;} }總結
- 上一篇: jsp时间格式化
- 下一篇: docx、ppt、pdf转txt