1. 方法宣告的語法
在 Java 中宣告方法就像寫食譜:你要說明方法回傳什麼(型別)、它的名稱、需要哪些材料(參數),並寫出做法(方法本體)。
通用格式:
tip_vozvrashchaemogo_znacheniya imyaMetoda(parametry)
{
// 在這裡寫指令
}
- 回傳型別 — 方法會回傳什麼(例如,int、void — 如果不回傳、String等等)。
- 方法名稱 — 由你依照 Java 規則命名。
- 參數 — 方法將使用的變數清單(可以為空)。
- 方法本體 — 你寫在大括號 { } 中的指令。
沒有參數的方法範例
void printHello()
{
System.out.println("你好,世界!");
}
說明:void — 方法不回傳任何值;printHello — 名稱;() — 沒有參數。
帶參數的方法範例
void printName(String name)
{
System.out.println("你好," + name + "!");
}
說明:void — 不回傳值;printName — 方法名稱;String name — 一個 String 型別的參數。
帶多個參數的方法範例
void printSum(int a, int b)
{
System.out.println("總和:" + (a + b));
}
說明:參數以逗號分隔。在方法內像一般變數那樣使用它們;運算子 + 會進行加法。
重要!
- 方法宣告在類別內,但不能在其他方法內。
- 在 Java 中不能在方法裡再宣告方法——沒有任何「俄羅斯套娃」。
2. 呼叫方法
宣告方法就像掛上一個牌子「我來煮咖啡」。要真的喝到咖啡,還需要呼叫方法——寫下它的名稱並傳入參數值。
如何呼叫方法
如果方法在同一個類別且被宣告為 static(就像 main),可以直接用名稱呼叫:
printHello();
printName("Alisa");
printSum(3, 5);
如果方法不是 static,就需要透過物件來呼叫(稍後學習類別與物件時會介紹)。
範例:從 main 呼叫方法
public class MethodsDemo
{
public static void main(String[] args)
{
printHello();
printName("Bob");
printSum(10, 20);
}
static void printHello()
{
System.out.println("你好,世界!");
}
static void printName(String name)
{
System.out.println("你好," + name + "!");
}
static void printSum(int a, int b)
{
System.out.println("總和:" + (a + b));
}
}
請注意:方法以 static 修飾,才能從 main(它本身也是 static)呼叫。
3. 參數與引數:是什麼?
參數——在宣告方法時於括號中宣告的變數。
引數——你在呼叫方法時實際傳入的值。
類比:參數像購物清單;引數是你實際放入購物籃的東西。
範例
static void greet(String name) // name — 參數
{
System.out.println("你好," + name + "!");
}
public static void main(String[] args)
{
greet("Katya"); // "Katya" — 引數
greet("Vasya"); // "Vasya" — 引數
}
當你呼叫 greet("Katya") 時,方法內的變數 name 會等於 "Katya"。
多個參數
static void printInfo(String name, int age)
{
System.out.println("姓名:" + name + ",年齡:" + age);
}
public static void main(String[] args)
{
printInfo("Masha", 25);
printInfo("Petya", 31);
}
注意! 參數的型別與順序必須與方法宣告時一致。
4. 實作:撰寫自己的方法
印出包含使用者姓名的問候語的方法
static void sayHelloTo(String name)
{
System.out.println("你好," + name + "!");
}
public static void main(String[] args)
{
sayHelloTo("Andrey");
sayHelloTo("Elvira");
}
計算兩數總和的方法
static void printSum(int a, int b)
{
int sum = a + b;
System.out.println("總和:" + sum);
}
public static void main(String[] args)
{
printSum(7, 8);
printSum(15, -5);
}
印出陣列元素的方法
static void printArray(int[] array)
{
System.out.print("陣列:");
for (int i = 0; i < array.length; i++)
{
System.out.print(array[i] + " ");
}
System.out.println();
}
public static void main(String[] args)
{
int[] nums = {1, 2, 3, 4, 5};
printArray(nums);
}
將同一行字串列印 n 次的方法
static void repeatPrint(String text, int n)
{
for (int i = 0; i < n; i++)
{
System.out.println(text);
}
}
public static void main(String[] args)
{
repeatPrint("Java 很酷!", 3);
}
5. 方法如何幫助你構建應用程式
如果你決定寫一個簡單的主控台遊戲或計算器,把每個任務包成方法,程式碼會更清楚。
範例:迷你計算器
public class Calculator
{
public static void main(String[] args)
{
printGreeting();
printSum(3, 7);
printDifference(10, 4);
}
static void printGreeting()
{
System.out.println("歡迎使用計算器!");
}
static void printSum(int a, int b)
{
System.out.println("總和:" + (a + b));
}
static void printDifference(int a, int b)
{
System.out.println("差:" + (a - b));
}
}
未來你可以持續加入新的方法(乘法、除法、處理數值陣列等),而應用程式也能擴充,但不會變成一大串沒完沒了的程式碼。
6. 實用細節
方法名稱
- 方法名稱通常以小寫開頭並採用 camelCase:printSum、sayHelloTo、calculateArea。
- 名稱應該能表達動作。避免使用 doStuff 與 method1 這種名稱。
參數順序
- 呼叫時請遵守參數的順序與型別。
- 如果方法接受 printInfo(String name, int age),就不能呼叫 printInfo(25, "Masha")。
能否宣告兩個同名的方法?
可以,只要它們的參數列表不同(型別或數量不同)。這叫作方法多載:
static void printSum(int a, int b) { /* ... */ }
static void printSum(int a, int b, int c) { /* ... */ }
這個主題會在獨立的講座詳細介紹——現在只要知道 Java 不會限制一個名稱只能有一個方法即可。
7. 使用方法與參數時的常見錯誤
錯誤 № 1:呼叫時參數數量或型別不相符。
如果方法宣告為 printSum(int a, int b),而你卻這樣呼叫 printSum(5),編譯器會說不存在這樣的方法。同理,printSum("五", 7) — 型別錯誤。
錯誤 № 2:把參數和引數搞混。
在方法宣告中寫的是參數(例如 int a, int b),而在呼叫時傳入的是引數(printSum(5, 7)). 不需要在 main 中建立同名變數——重點是型別與順序要對。
錯誤 № 3:嘗試在方法內宣告方法。
在 Java 中方法只能宣告在類別層級,不能在另一個方法內宣告。
錯誤 № 4:從 static 的 main 呼叫時沒有使用 static。
如果你要從 main 呼叫方法,請在宣告時加上 static,或建立物件並透過它來呼叫。詳細內容會在學習 OOP 時再說明。
GO TO FULL VERSION