Java基礎——方法
在我們的日常生活中,會遇到各種各樣的問題,而我們需要尋求這些問題的解決辦法,也就是解決方法,所以方法在日常生活中也是無處不在的。在java中,我們去解決某個問題並找到這個問題的解決辦法就是方法。方法中封裝的是解決問題的具體代碼實現的功能,而我們只需要調用這個方法名就可以去解決這個問題。像之前學過的隨機數的調用,就是調用的nextInt()方法來實現隨機數的產生。
定義方法的格式:
修飾符 返回值類型 方法名(參數列表…){
功能實現的具體代碼
return;
}
方法格式分析:
修飾符:用於修飾該方法的各種狀態,修飾符比較多,現在先是固定的,會面會逐漸進行接觸的,public static,
返回值類型:方法實現功能返回結果的數據類型,返回結果什麽類型就寫什麽類型。
方法名:方法名的定義遵循標識符的規則,第一個單詞都小寫,後面每個單詞的首字母都大寫。
參數列表:是否有未知數據的參與,沒有就不定義
return:有兩個作用,其一是返回這個功能的結果,其二是用於結束方法。
下面通過一個代碼來演示方法定義的具體情況:
/* 需求:計算長方形的面積(在方法中實現這個功能) 思路:1、定義一個方法getArea()在方法中實現 2、修飾符:public static 3、返回值類型:計算長方形的面積返回後是一個整數類型的值,int 4、方法名:遵循標識符的定義規則getArea() 5、參數列表:在功能實現過程中,有未知的數據參與運算,長和寬,int length,int weight 6、return的是面積。 7、調用該方法的功能,在main方法中進行調用 */ public class MethodDemo{ public static void main(String[] args){ //調用getArea()方法,傳入長和寬的值 int area = getArea(4,8); //打印該面積的值 System.out.println("該長方形的面積是:"+area); } //定義方法,實現功能的封裝 public static int getArea(int length,int weight){ //計算面積的功能實現 //int area = length * weight; return length * weight; } }
方法定義練習
練習一:打印三行三列的“*”矩形
/* 需求:打印三行三列的”*“矩形 思路:1、定義功能方法 2、修飾符:public static 3、返回值類型:在控制臺打印圖形即可 ,沒有返回值類型void 4、方法名:符合標識符的定義規則即可,printRect() 5、參數列表:已經規定是三行三列,不需要定義參數列表 */ public class MethodDemo_1{ public static void main(String[] args){ //調用功能方法 printRect(); } //定義功能方法 public static void printRect(){ //使用for循環遍歷打印矩形 for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ System.out.print("*"); } System.out.println(); } } }
練習二:鍵盤輸入一個數並打印這個數
/* 需求:鍵盤輸入一個數並打印這個數 思路:1、定義功能方法 2、修飾符:public static 3、返回值類型:需要返回輸入的這個數,int 4、方法名:遵循標識符的定義規則即可,getNumber() 5、參數列表:沒有未知數據的參與,只需要自己在鍵盤輸入這個數即可 */ import java.util.Scanner; public class MethodDemo_2{ public static void main(String[] args){ //調用功能方法 //int num = getNumber(); System.out.println(getNumber()); } //定義方法功能 public static int getNumber(){ //定義Scanner類,完成鍵盤的輸入 Scanner sc = new Scanner(System.in); //int number = sc.nextInt(); //返回輸入的數據給調用者 return sc.nextInt(); } }
練習三:打印指定M行,每行N個*號的矩形
/* 需求:打印指定M行,每行N個*號的矩形 思路:1、定義功能方法 2、修飾符:public static 3、返回值類型:打印圖形,無返回值void 4、方法名:符合標識符的定義規則即可,printRect() 5、參數列表:需要自己去指定圖形的行數和列數,int m,int n 6、調用功能方法 */ public class MethodDemo_3{ public static void main(String[] args){ //調用功能方法 printRect(6,7); } //定義功能方法 public static void printRect(int m,int n){ //通過for循環遍歷打印圖形 for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ System.out.print("*"); } System.out.println(); } } }
練習四:求三個數的平均數
/* 需求:求三個數的平均數 思路:1、定義功能方法 2、修飾符:public static 3、返回值類型:求平均數結果需要返回這三個數的平均數的值,int 4、方法名:符合標識符的定義規則即可,getAvg() 5、參數列表:需要三個未知數據的參與,int a,int b,int c 6、調用功能方法 */ public class MethodDemo_4{ public static void main(String[] args){ //調用功能方法 int avg = getAvg(4,8,9); System.out.println("三個數的平均值是:"+avg); } //定義功能方法 public static int getAvg(int a,int b,int c){ //返回計算後的值 return (a+b+c)/3; } }
定義方法時的一些註意事項:
1、 方法寫在類中,方法與方法不能嵌套,也就是說一個方法不能寫進另一個方法中,
2、 在調用方法時方法名和參數列表一定不能寫錯,否則失敗
3、 方法的返回值如果是void,ruturn可以省略不寫,但是方法中return後面一定不能寫其他語句,否則會訪問不到編譯失敗
4、 方法的返回值類型必須和return的類型相匹配。
5、 方法不能夠重復定義。
6、 在調用方法時,方法的返回值是void,調用的時候不能使用輸出語句,沒用返回值打印數據也就不存在,邏輯錯誤。
方法的重載
所謂的重載就是在同一個類中,功能的方法名可以一樣,但是它的參數列表裏面的數據類型和數據個數不一樣。
下面的代碼演示了重載的情況:
/* 重載的情況:求數據的和,個數和類型不確定,所以需要用到重載 */ public class MethodOverload{ public static void main(String[] args){ //調用功能 int sum1 = add(3,5); int sum2 = add(4,5,6); double sum3 = add(2.1,6.3); System.out.println(sum1); System.out.println(sum2); System.out.println(sum3); } //求和的功能實現 public static int add(int a,int b){ return a+b; } public static int add(int a,int b,int c){ return a+b+c; } public static double add(double a,double b){ return a+b; } }
重載的註意事項
1、 方法的參數列表必須不同(數據個數、數據類型、數據順序)
2、 方法的重載與變量名無關
3、 方法的重載和返回值類型無關
4、 方法的重載和修飾符無關
所以方法的重載只和參數列表有關,和其他無關
Java基礎——方法