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

Java 中 += 與 ++ 的本質區別:隱含強制類型轉換

     編輯:Java 綜合教學

Java 中 += 與 ++ 的本質區別:隱含強制類型轉換

許多開發者疑惑:為何 int i = 5; long j = 7; i = i + j; 編譯失敗,而 i += j; 卻能通過?

核心原因

根據 JLS §15.26.2 Compound Assignment Operators 規定:

E1 op= E2 等價於 E1 = (T) ((E1) op (E2)),其中 T 為 E1 的類型。

具體分析

int i = 5;
long j = 7;

// i = i + j  → 編譯錯誤:long 無法隱式轉為 int
// i += j     → 等價於 i = (int)(i + j)  → 編譯通過,結果 12

其他複合賦值同理

運算子等價展開
i -= ji = (int)(i - j)
i *= ji = (int)(i * j)
i /= ji = (int)(i / j)

注意事項

  • 隱含轉型可能導致精度損失或溢位,需謹慎使用。
  • ++ 運算子無此行為,i++ 等價於 i = i + 1,若 i 為 byte/short/char 仍需顯式轉型。

理解此機制有助於避免類型轉換相關的隱性 Bug。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved