賦值運算符分類 基本賦值運算符:=(支持連續賦值) 擴展賦值運算符:+=,-=,*=,/=,%= 1 short s = 3; 2 s = s + 2; 3 s+=2; 上述代碼第2行和第3行有什麼區別?第2行:變數s為short類型,2預設為int類型,兩者相加後賦值給short類型的變數s時,會 ...
賦值運算符分類
-
基本賦值運算符:=(支持連續賦值)
-
擴展賦值運算符:+=,-=,*=,/=,%=
1 short s = 3; 2 s = s + 2; 3 s+=2;
上述代碼第2行和第3行有什麼區別?
第2行:變數s為short類型,2預設為int類型,兩者相加後賦值給short類型的變數s時,會因為int類型不能自動轉換為short類型而出現/編譯錯誤,所以代碼可以修改為:s = (short)(s + 2)後再運算。另外當變數參與運算時,java程式並不知道運算結束後該變數會不會超出當前變數類型的範圍,所以會把變數轉換為更大長度的數據類型第3行:在使用擴展賦值運算符時,不會出現/編譯錯誤,因為變數在參與運算時會自動強制轉換為當前變數的類型
// 定義變數 int i = 1; // 拿*=的左邊變數和右邊的數據做相乘運算,然後把結果賦值給左邊的變數 i*=0.1; // 註意:擴展的賦值運算符,隱含了強制類型轉換 // 所以1*0.1強制轉換為int類型導致捨棄小數部分,結果為:0 System.out.println(i); // i進行自增運算,結果為:1 i++; System.out.println(i);