方法語法格式
修飾符 返回值類型 方法名(參數類型 參數名1,參數類型 參數名2,......){
執行語句
………
return 返回值;
}
對於上面的語法格式中具體說明如下:
修飾符:方法的修飾符比較多,有對訪問權限進行限定的,有靜態修飾符static,還有最終修飾符final等,這些修飾符在後面的學習過程中會逐步介紹
返回值類型:用於限定方法返回值的數據類型
參數類型:用於限定調用方法時傳入參數的數據類型
參數名:是一個變量,用於接收調用方法時傳入的數據
return關鍵字:用於結束方法以及返回方法指定類型的值
返回值:被return語句返回的值,該值會返回給調用者
需要特別注意的是,方法中的“參數類型 參數名1,參數類型 參數名2”被稱作參數列表,它用於描述方法在被調用時需要接收的參數,如果方法不需要接收任何參數,則參數列表爲空,即()內不寫任何內容。方法的返回值必須爲方法聲明的返回值類型,如果方法中沒有返回值,返回值類型要聲明爲void,此時,方法中return語句可以省略。
接下來通過一個案例來演示方法的定義與使用,如下圖所示
public class MethodDemo01 {
public static void main(String[] args) {
int area = getArea(3, 5); // 調用 getArea方法
System.out.println(" The area is " + area);
}
// 下面定義了一個求矩形面積的方法,接收兩個參數,其中x爲高,y爲寬
public static int getArea(int x, int y) {
int temp = x * y; // 使用變量temp記住運算結果
return temp; // 將變量temp的值返回
}
}
在上述代碼中,定義了一個getArea()方法用於求矩形的面積,參數x和y分別用於接收調用方法時傳入的高和寬,return語句用於返回計算所得的面積。在main()方法中通過調用getArea()方法,獲得矩形的面積,並將結果打印。
方法調用圖解
接下來通過一個圖例演示getArea()方法的整個調用過程,如下圖所示。
從上圖中可以看出,在程序運行期間,參數x和y相當於在內存中定義的兩個變量。當調用getArea()方法時,傳入的參數3和5分別賦值給變量x和y,並將x*y的結果通過return語句返回,整個方法的調用過程結束,變量x和y被釋放。
方法定義練習
分別定義如下方法:
定義無返回值無參數方法,如打印3行,每行3個*號的矩形
定義有返回值無參數方法,如鍵盤錄入得到一個整數
定義無返回值有參數方法,如打印指定M行,每行N個*號的矩形
定義有返回值有參數方法,如求三個數的平均值
無返回值無參數方法,如打印3行,每行3個*號的矩形
public static void printRect(){
//打印3行星
for (int i=0; i<3; i++) {
//System.out.println("***"); 相當於是打印3顆星,換行
//每行打印3顆星
for (int j=0; j<3; j++) {
System.out.print("*"); // ***
}
System.out.println();
}
}
有返回值無參數,如鍵盤錄入一個數
public static int getNumber(){
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
return number;
}
無返回值,有參數
public static void printRect2(int m, int n){
//打印M行星
for (int i=0; i<m; i++) {
//每行中打印N顆星
for (int j=0; j<n; j++) {
System.out.print("*");
}
System.out.println();
}
}
有返回值有參數
public static double getAvg(double a, double b, double c) {
double result = (a+b+c)/3;
return result;
}
方法的重載
Java允許在一個類中定義多個名稱相同的方法,但是參數的類型或個數必須不同,這就是方法的重載。
重載的注意事項
重載方法參數必須不同:
參數個數不同,如method(int x)與method(int x,int y)不同
參數類型不同,如method(int x)與method(double x)不同g
參數順序不同,如method(int x,double y)與method(double x,int y)不同
重載只與方法名與參數類型相關與返回值無關
如void method(int x)與int method(int y)不是方法重載,不能同時存在
重載與具體的變量標識符無關
如method(int x)與method(int y)不是方法重載,不能同時存在