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

Java 賦值表達式返回值機制:System.out.println(a=2) 輸出 2 的深度解析

     編輯:程式設計綜合問答

現象代碼

int a = 1;
System.out.println(a = 2);  // 輸出: 2

核心結論

Java 中賦值表達式的值為被賦的值(右側值)。a = 2 先將 2 賦給 a,整個表達式的值為 2,作為 println 參數輸出。

語言規範依據 (JLS §15.26)

賦值表達式的結果為賦值後變量的值。對於基本類型,即為賦入的值。

等價代碼展開

// 原代碼
System.out.println(a = 2);

// 編譯器視為等價於
a = 2;                    // 1. 執行賦值
int temp = a;             // 2. 表達式值為變量新值 (2)
System.out.println(temp); // 3. 輸出

表達式分類完整體系

類別示例返回值
算術表達式3 + 4, i++計算結果 / 運算前值
關系表達式3 > 7boolean (true/false)
邏輯表達式(5>4) && trueboolean
位運算表達式a = 34 ^ 3位運算結果
賦值表達式a = 2賦入的值 (2)
條件表達式b = a>0 ? 1 : -1選中的分支值
方法調用表達式Math.max(1,2)方法返回值

表達式語句

表達式後加分號成為語句:

int i = 123;        // 賦值表達式語句
System.out.println(); // 方法調用表達式語句
i++;                // 後綴表達式語句

實際應用場景

1. 連續賦值

int a, b, c;
a = b = c = 0;  // 右結合:c=0 → b=0 → a=0,值均為 0

2. 循環條件中賦值

String line;
while ((line = reader.readLine()) != null) {
    // line 同時完成賦值和非空判斷
}

3. 條件判斷中賦值

if ((n = list.size()) > 10) { ... }  // 獲取大小並判斷

常見誤區

  • ❌ 認為 a = 2 返回 a 的引用/地址(Java 無指針概念)
  • ❌ 混淆 == (比較) 和 = (賦值) 在條件中的使用
  • ✅ 理解:賦值表達式有值、有副作用,值即右操作數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved