日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详解方法的重载

發布時間:2024/1/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解方法的重载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

方法重載

對于功能類似的方法來說,因為參數列表不一樣,卻要記住那么多不同的方法名稱,太麻煩
方法的重載(Overload):在同一個類中定義的多個方法的名稱一樣,但是參數列表不一樣
好處:只需要記住唯一的一個方法名稱,就可以實現類似的多個功能
方法重載與下列因素有關:
1、參數個數不同
2、參數類型不同
3、參數的多類型順序不同
方法重載與下列因素無關:
1、與參數的名稱無關
2、與方法的返回值類型無關

public class Demo01MethodOverload {public static void main(String[] args) {/* System.out.println(sumTwo(10,20));System.out.println(sumThree(10,20,30));System.out.println(sumFour(10,20,30,40));*/System.out.println(sum(10,20));//寫幾個就是幾個}/* public static int sumTwo(int a,int b){return a+b;}public static int sumThree(int a,int b,int c){return a+b+c;}public static int sumFour(int a,int b,int c,int d){return a+b+c+d;}*/public static int sum(int a,int b) {System.out.println("有2個參數的方法執行!");return a + b;}public static int sum(int a,int b,int c){System.out.println("有3個參數的方法執行!");return a+b+c;}public static int sum(int a,int b,int c,int d){System.out.println("有4個參數的方法執行!");return a+b+c+d;}public static int sum(double a,double b){ //參數類型不同return (int)(a+b);}public static int sum(double a,int b){ //參數的多類型順序不同return (int)(a+b);}/*public static int sum(int x,int y){ //錯誤寫法,與參數的名稱無關return x+y;}*//*public static double sum(int a,int b){ //錯誤寫法,與參數返回值類型無關return a+b+0.0;}*/ }

例一、比較兩個數據是否相等

參數類型分別為兩個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;} }

總結

以上是生活随笔為你收集整理的详解方法的重载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。