5、方法的定義與使用
阿新 • • 發佈:2018-12-19
方法的定義與使用
方法的基本概念
- 方法就是
一段可重複使用的程式碼塊
。所以當要反覆執行一段程式碼時,可考慮將這段程式碼定義為方法。本章中的方法指的是定義在主類中,由主方法直接呼叫
的方法。此類方法的語法:
public static 返回值型別 method_name(v_type v1, v_type v2,...) {
方法體; // 方法要進行的若干操作
[return [返回值] ;] // []中內容可忽略
}
返回值型別:
資料型別(基本資料型別、引用資料型別) | 無返回值(void) |
---|---|
如果方法設定了返回值型別,那麼必須使用return 返回與之型別對應的內容 |
不需要return 語句,但可用return結束方法呼叫 |
- 方法名的命名規則:
第一個單詞小寫,隨後每個單詞首字母大寫
。
範例:定義無參無返回值方法
package com.java.demo;
public class Demo {
public static void main(String[] args) {
print(); // 直接呼叫
}
public static void print (){
System.out.println("無參無返回值方法");
}
}
範例:定義含參無返回值方法
package com.java.demo;
public class Demo {
public static void main(String[] args) {
compare(10.2); // 呼叫時必須寫入引數
compare(-10.2);
}
public static void compare(double x){
String str = x > 0.0 ? "這是正數" :"這是負數";
System.out.println(str);
}
}
有了引數後,方法就可以根據不同的引數內容進行資料的處理。
範例:定義含引數有返回值方法
package com.java.demo;
public class Demo {
public static void main(String[] args) {
//定義變數接收返回值,而後輸出
int result = add(10, 20);
System.out.println(result);
// 直接輸出返回值
System.out.println(add(10, 20));
}
public static int add(int x, int y) {
return x + y;
}
}
- 一個方法使用
void
定義,該方法無法使用return返回值,但可以使用return結束呼叫。
package com.java.demo;
public class Demo {
public static void main(String[] args) {
print(1100); // x = 1100
print(3); // 結束呼叫,不輸出x
}
public static void print(int x) {
if (x == 3) {
System.out.println("結束呼叫,不輸出x");
return;
}
System.out.println("x = " + x);
}
}
只有返回值型別為void時,才可使用return結束方法的呼叫。
方法過載
- 假設
add()
要執行兩個整數相加,也要執行三個整數相加和兩個小數相加,此時一個方法體無法實現所有功能,但又不能定義其他方法,就需要為add()
定義不同的功能,該操作就稱為方法過載(overloading)
。 - 方法過載要求
方法名一致,引數型別或個數不同
。
package com.java.demo;
public class Demo {
public static void main(String[] args) {
// 根據引數的個數或型別,呼叫不同方法
add(10,20);
add(10.2,20.2);
add(10,20,30);
}
// 方法名相同,引數的型別或個數不同
public static void add(int x, int y) {
System.out.println("兩個整數相加:" + (x + y));
}
public static void add(double x, double y) {
System.out.println("兩個小數相加:" + (x + y));
}
public static void add(int x, int y, int z) {
System.out.println("三個整數相加:" + (x + y + z));
}
}
System.out.println()
可以輸出不同型別資料,可知此方法是一個被過載後的方法。
- 方法過載的說明:
(1)雖然過載後的方法的返回值型別可以不同,但建議方法過載時返回值型別應一致;
(2)方法過載是根據引數型別或個數的不同來區分呼叫,而不是根據返回值型別。
package com.java.demo;
public class Demo {
public static void main(String[] args) {
}
// 報錯,已在類中定義了方法 add(int,int)
// 說明方法過載的依據是引數的個數或型別不同,而不是返回值型別不同
public static int add(int x, int y) {
return x + y;
}
public static double add(int x, int y) {
return x + y;
}
}
遞迴呼叫
- 遞迴呼叫是指
方法呼叫自身
。要實現遞迴呼叫,要有結束條件。遞迴呼叫應儘量少使用,因為處理不當會出現記憶體溢位。
範例:遞迴實現1~100的累加操作
package com.java.demo;
public class Demo {
public static void main(String[] args) {
System.out.println(sum(100));
}
public static int sum(int num){
if (num == 1) { // 結束遞迴呼叫
return 1;
}
// 遞迴呼叫
return num + sum(num - 1);
}
}
程式碼的執行步驟:
No. | 內容 | 返回值 |
---|---|---|
1 | 主方法呼叫sum(100) | 100+sum(99) |
2 | 遞迴呼叫sum(99) | 100 + 99 + sum(98) |
3 | 遞迴呼叫sum(98) | 100 + 99 + 98+ sum(97) |
… | 依此類推 | … |
最後一次 | 遞迴呼叫sum(1) | sum=100+99+98+…+2+1,結束遞迴 |