首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 方法基礎:值傳遞機制與交換變量的三步驟

     編輯:Java 綜合教學

Java 方法基礎:值傳遞機制

方法是 Java 代碼復用的基本單元。本文聚焦參數傳遞本質——值傳遞,通過交換變量經典案例,釐清基本類型與引用類型在方法調用時的內存行為差異。

一、交換兩個變量的三步驟

  1. 將第一個變量值暫存至臨時變量。
  2. 將第二個變量值賦給第一個變量。
  3. 將臨時變量值賦給第二個變量。
int temp = a;
a = b;
b = temp;

二、值傳遞鐵律

Java 只有值傳遞。實參的值(基本類型直接是數值,引用類型是對象地址)被**複製**一份傳給形參。

三、基本類型:數值複製,互不影響

void swapPrimitive(int x, int y) {
    int t = x; x = y; y = t; // 僅影響局部副本
}
int a = 1, b = 2;
swapPrimitive(a, b);
// a 仍為 1,b 仍為 2
  • 棧幀中 a、b 存儲數值。
  • 調用時在新棧幀創建 x、y,複製數值。
  • 方法內修改 x/y,外部 a/b 不變。

四、引用類型:地址複製,可修改對象內容

void modifyArray(int[] arr) {
    arr[0] = 99; // 修改堆上對象內容
    arr = new int[5]; // 修改局部引用指向,外部不受影響
}
int[] nums = {1, 2, 3};
modifyArray(nums);
// nums[0] 變為 99,但 nums 引用仍指向原數組
  • 棧幀存儲引用地址,指向堆中數組對象。
  • 調用時複製引用地址,雙方指向同一堆對象。
  • 方法內通過引用修改對象字段/元素 → 外部可見。
  • 方法內重新賦值引用(arr = ...) → 僅改變局部引用指向,外部引用不變。

五、內存圖解總結

類型棧中存儲傳遞內容方法內修改對外部影響
基本類型數值數值副本無
引用類型地址地址副本可修改對象內容;不可改變外部引用指向

六、實戰建議

  1. 需修改呼叫者基本類型變量 → 返回新值或封裝為對象/數組/集合。
  2. 需修改呼叫者引用指向 → 返回新引用賦值(list = modify(list))。
  3. 防禦性編程:公共 API 盡量不修改入參對象狀態,或明確文檔說明副作用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved