>[success] # 方法傳參過程
~~~
public class MaxNum {
int a = 0;
int b = 0;
// 返回 a b 最大值
int max(int a, int b) {
int max = a > b ? a : b;
return max;
}
public static void main(String[] args) {
MaxNum maxNum = new MaxNum();
int a = 10;
int b = 20;
int res = maxNum.max(a, b);
System.out.println(res);
}
}
~~~
上面代碼 執行過程:
1. 為main方法中的變量a、b、res分配空間并初始化。此時 a 初始化為10,初始化為20,res 為空
2. 調用max方法,為`max方法`的`形參`變量`a、b`分配空間。
3. 將`實參變量`的數值賦值到`形參變量`的內存空間中。
4. max方法運行完畢后返回,形參變量空間釋放。
5. main方法中的res變量得到max方法的返回值。
6. main方法結束后釋放相關變量的內存空間。
>[success] # 注意事項
* `基本數據類型`的變量作為`方法的參數傳遞`,`形參變量`數值的`改變`通常`不會影響`到`實參變量的數值`,因為兩個變量有各自獨立的內存空間
~~~
// 改變形參值并沒有影響實參
public class MaxNum {
void max(int a) {
// 改變形參的賦值
a = 0;
System.out.println("形參a 的值:" + a);
}
public static void main(String[] args) {
int a = 100;
MaxNum maxNum = new MaxNum();
// 打印形參值
maxNum.max(a); // 0
System.out.println("實參a 的值:" + a); // 100
}
}
~~~
* `引用數據類型`的變量作為方法的參數傳遞時,`形參變量`指向內容的`改變`,`會影響`到`實參變量`指向內容的`數值`,因為兩個變量指向`同一塊內存空間`
~~~
public class MaxNum {
void max(int[] ls) {
// 改變形參的賦值
ls[0] = 1234;
System.out.println("形參a 的值:"+ ls[0] ); // 1234
}
public static void main(String[] args) {
int[] ls = { 1, 2, 3, 4 };
MaxNum maxNum = new MaxNum();
// 打印形參值
maxNum.max(ls); // 1234
System.out.println("實參a 的值:" + ls[0]); // 1234
}
}
~~~
* 當引用數據類型的變量作為方法的參數傳遞時,若形參變量改變指向后再改變指定的內容,則通常不會影響到實參變量指向內容的改變,因為兩個變量指向不同的內存空間。
~~~
public class MaxNum {
void max(int[] ls) {
// 相當于給形參的ls 重新賦值已經不在指向之前的實參了
ls = new int[4];
ls[0] = 1234;
System.out.println("形參a 的值:"+ ls[0] );// 1234
}
public static void main(String[] args) {
int[] ls = { 1, 2, 3, 4 };
MaxNum maxNum = new MaxNum();
// 打印形參值
maxNum.max(ls); // 1234
System.out.println("實參a 的值:" + ls[0]); // 1
}
}
~~~
>[danger] ##### 總結
1. 基本類型的參數傳輸存儲的數據值。
2. 引用類型的參數傳輸存儲的地址值。

- windows -- 環境變量
- Vscode -- 編寫java
- 初始java
- java -- 關鍵字
- 編寫第一個java程序
- java -- 注釋
- 計算機存儲 -- 進制
- java -- 類型
- java -- 變量
- 數字類型
- 布爾類型
- 字符類型
- 類型轉換
- 雙等比較是什么
- java -- 運算符
- 算數運算符
- 字符串拼接
- 關系/比較運算符
- 自增減運算符
- 邏輯運算符
- 三目運算
- 賦值運算符
- 移位運算符
- 位運算符
- 運算符優先級
- java -- 流程控制語句
- if /else if /if -- 判斷
- switch case分支結構
- for -- 循環
- 用雙重for循環
- while -- 循環
- do while -- 循環
- 案例練習
- java -- 數組
- 數組的存儲
- 數組的增刪改查
- 數組的特點
- 數組案例
- 二維數組
- 數組的工具方法
- java -- 方法
- java -- 方法的重載
- java -- 方法的調用流程
- java -- 類方法傳參注意事項
- java -- 方法練習案例
- 對比 return break continue
- for each循環
- java -- 基礎練習
- java -- 面向對象
- java -- 創建類和對象
- java -- 訪問控制符
- java -- 類成員方法
- java -- 構造方法
- java -- this
- java -- 封裝
- java -- 對象內存圖
- java -- 創建對象案例
- java -- static
- java -- 繼承
- super -- 關鍵字
- java -- 構造塊和靜態代碼塊
- java -- 重寫
- java -- final
- java -- 多態
- java -- 抽象類
- java -- 接口
- 引用類型數據轉換
- 綜合案例
- java -- 內部類
- java -- 回調模式
- java -- 枚舉類型
- java -- switch 使用枚舉
- java -- 枚舉方法使用
- java -- 枚舉類實現接口
- java -- javaBean
- java -- package 包
- java -- import
- java -- 遞歸練習
- java -- 設計模式
- 單例模式
- java -- 注解
- java -- 元注解
- Java -- 核心類庫
- java -- 處理字符串
- Java -- String
- String -- 常用方法
- String -- 正則
- Java -- StringBuilder 和 StringBuffer
- 知識點
- Java -- StringJoiner 字符串拼接
- 練習題
- 字符串的總結
- Java -- 包裝類
- Integer
- Double
- Boolean
- Character
- java -- 集合類
- java -- util.Collection
- Iterator接口
- java -- util.List
- java -- ArrayList
- java -- util.Queue
- java -- util.Set
- java -- util.Map
- java -- util.Collections
- Java -- Math
- Java -- java.lang
- Java -- Object
- Java -- 獲取當前時間戳
- Java -- 異常
- Java -- java.util
- java -- Date
- java -- Calender
- Java -- java.text
- Java -- SimpleDateFormat
- Java -- java.time
- Java -- java.io
- java -- io.File
- java -- 泛型
- IDEA -- 用法