Java方法的基本用法
- 前言
- 一、什么是方法
- 方法存在的意義
- 示例
- 二、方法定義語法
- 基本語法
- 代碼示例
- 注意事項
- 三、方法調用的執行過程
- 基本規則
- 代碼示例
- 計算兩個整數相加
- 計算 1! + 2! + 3! + 4! + 5!
- 四、實參和形參的關系
- 代碼示例
- 交換兩個整型變量
- 原因分析
- 解決辦法
- 五、沒有返回值的方法
- 代碼示例
前言
推薦一個網站給想要了解或者學習人工智能知識的讀者,這個網站里內容講解通俗易懂且風趣幽默,對我幫助很大。我想與大家分享這個寶藏網站,請點擊下方鏈接查看。
https://www.captainbed.cn/f1
Java方法的基本用法包括定義方法(指定方法名、返回類型、參數列表和方法體),調用方法(通過方法名及參數列表調用),以及傳遞參數(按值傳遞基本數據類型,按引用傳遞對象)。
一、什么是方法
方法就是一個代碼片段. 類似于 C 語言中的 “函數”.
Java方法是Java語言中用于執行特定任務的一段代碼。它是程序的基本構建塊之一,常用于組織和封裝可重復使用的功能。方法可以接受輸入參數,并返回一個值,也可以不接受參數或返回值。在調用方法時,需要提供所需的參數,并根據方法的定義來處理和返回結果。通過使用方法,可以提高代碼的可讀性、可維護性和重用性。在Java中,每個方法都屬于一個類或對象,并且可以在其他方法中調用。方法的語法如下:
修飾符 返回類型 方法名(參數列表) {// 方法體// 執行特定任務的代碼return 返回值; // 如果方法有返回值的話
}
方法存在的意義
- 是能夠模塊化的組織代碼(當代碼規模比較復雜的時候).
- 做到代碼被重復使用, 一份代碼可以在多個位置使用.
- 讓代碼更好理解更簡單.
- 直接調用現有方法開發, 不必重復造輪子
示例
計算 1! + 2! + 3! + 4! + 5!
public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 5; i++) {int tmp = 1;for (int j = 1; j <= i; j++) {tmp *= j;}sum += tmp;}System.out.println("sum = " + sum);
}
這段代碼的作用是計算1! + 2! + 3! + 4! + 5! 的值,并打印出結果。
在程序運行過程中,使用嵌套的兩個for
循環來計算每個階乘。外層的for
循環從1遍歷到5,表示計算1!到5!的值。內層的for
循環從1遍歷到當前的外層循環變量i的值,表示計算每個數字的階乘。
在內層循環中,創建一個臨時變量tmp
,并將其初始化為1。內層循環每次迭代都將tmp
乘以當前的j值,從而計算階乘值。最后,將每個階乘值加到外層循環的變量sum
中。
最后,通過System.out.println()
語句打印出計算結果。
這個代碼中使用雙重循環, 比較容易寫錯
二、方法定義語法
基本語法
// 方法定義
public static 方法返回值 方法名稱([參數類型 形參 ...]){方法體代碼;[return 返回值];}// 方法調用
返回值變量 = 方法名稱(實參...);
代碼示例
實現一個方法實現兩個整數相加
class Test {public static void main(String[] args) {int a = 10;int b = 20;// 方法的調用int ret = add(a, b);System.out.println("ret = " + ret);}// 方法的定義public static int add(int x, int y) {return x + y;}
}
注意事項
public
和static
兩個關鍵字在此處具有特定含義, 我們暫時不討論, 后面文章會詳細介紹.- 方法定義時, 參數可以沒有. 每個參數要指定類型
- 方法定義時, 返回值也可以沒有, 如果沒有返回值, 則返回值類型應寫成
void
- 方法定義時的參數稱為 “形參”, 方法調用時的參數稱為 “實參”.
- 方法的定義必須在類之中, 代碼書寫在調用位置的上方或者下方均可.
- Java 中沒有 “函數聲明” 這樣的概念
三、方法調用的執行過程
基本規則
-
定義方法的時候, 不會執行方法的代碼. 只有調用的時候才會執行.
-
當方法被調用的時候, 會將實參賦值給形參.
-
參數傳遞完畢后, 就會執行到方法體代碼.
-
當方法執行完畢之后(遇到
return
語句), 就執行完畢, 回到方法調用位置繼續往下執行. -
一個方法可以被多次調用
代碼示例
計算兩個整數相加
class Main {public static void main(String[] args) {int a = 10;int b = 20;System.out.println("第一次調用方法之前");int ret = add(a, b);System.out.println("第一次調用方法之后");System.out.println("ret = " + ret);System.out.println("第二次調用方法之前");ret = add(30, 50);System.out.println("第二次調用方法之后");System.out.println("ret = " + ret);}public static int add(int x, int y) {System.out.println("調用方法中 x = " + x + " y = " + y);return x + y;}
}
計算 1! + 2! + 3! + 4! + 5!
class Main {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 5; i++) {sum += factor(i);}System.out.println("sum = " + sum);}public static int factor(int n) {System.out.println("計算 n 的階乘中! n = " + n);int result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}
}
使用方法, 避免使用二重循環, 讓代碼更簡單清晰.
四、實參和形參的關系
代碼示例
交換兩個整型變量
class Main {public static void main(String[] args) {int a = 10;int b = 20;swap(a, b);System.out.println("a = " + a + " b = " + b);}public static void swap(int x, int y) {int tmp = x;x = y;y = tmp;}
}
原因分析
剛才的代碼, 沒有完成數據的交換.
對于基礎類型來說, 形參相當于實參的拷貝. 即 傳值調用
int a = 10;
int b = 20;
int x = a;
int y = b;
int tmp = x;
x = y;
y = tmp;
可以看到, 對 x
和 y
的修改, 不影響 a
和 b
.
解決辦法
傳引用類型參數 (例如數組來解決這個問題)
關于數組我會在后面文章進行講解
class Main {public static void main(String[] args) {int[] arr = {10, 20};swap(arr);System.out.println("a = " + arr[0] + " b = " + arr[1]);}public static void swap(int[] arr) {int tmp = arr[0];arr[0] = arr[1];arr[1] = tmp;}
}
五、沒有返回值的方法
方法的返回值是可選的. 有些時候可以沒有的.
代碼示例
class Main {public static void main(String[] args) {int a = 10;int b = 20;print(a, b);}public static void print(int x, int y) {System.out.println("x = " + x + " y = " + y);}
}
另外, 如剛才的交換兩個整數的方法, 就是沒有返回值的.