<strike id="5ntnv"><i id="5ntnv"><del id="5ntnv"></del></i></strike>
<strike id="5ntnv"></strike><ruby id="5ntnv"></ruby><del id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></del><strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike>
<strike id="5ntnv"></strike>
<strike id="5ntnv"></strike>
<span id="5ntnv"><dl id="5ntnv"></dl></span>
<strike id="5ntnv"><i id="5ntnv"><del id="5ntnv"></del></i></strike><th id="5ntnv"><noframes id="5ntnv"><span id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></span>
<span id="5ntnv"></span>
<strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike>
<strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike><strike id="5ntnv"><i id="5ntnv"></i></strike><span id="5ntnv"></span>
<strike id="5ntnv"></strike>
<strike id="5ntnv"></strike>
<th id="5ntnv"><noframes id="5ntnv">
<ruby id="5ntnv"></ruby>
<strike id="5ntnv"><dl id="5ntnv"></dl></strike>

貴州網站建設公司貴州網站建設公司

Java復合賦值運算符(Compound Assignment Operators)

簡單介紹Java復合賦值運算符(`+= -= *= /+ >= >>>= |= &=`)中的復合賦值符類型轉換。

原文鏈接:https://clclcl.fun/2019/11/02/java/Compound-Assignment-Operators/

簡單介紹Java復合賦值運算符(+= -= *= /+ >= >>>= |= &=)中的運算類型轉換。

首先看一段代碼:

int i = 10;        long j = 100;        i = i + j; //Compiling error: incompatible types: possible lossy conversion from long to int        i += j; //Correct.        System.out.println(i);

很多人(包括我自己)都簡單的復合賦值符i += j理解為 i = i + j,那么為什么會出現上面的運算問題呢?這就得從java規范里,對+=這類復合賦值運算符的復合賦值符定義了。

什么是復合賦值運算符(Compound Assignment Operators)?

簡單來講,就是復合賦值符運算加賦值,譬如:
+= -= *= /+ >= >>>= |= &=,運算統一稱為op=.在Java規范里,復合賦值符這種運算符的效果是什么呢?
假設兩個變量,A,運算B,復合賦值符類型分別為TA,運算TB(當然可能是復合賦值符相同的類型),那么
A op= B等效于A = (TA)(A op B).
這樣回頭去看上面的運算代碼,就很清楚問題的復合賦值符原因了:
i + j由于類型的自動提升,結果為long類型,自然 i = i + jlong類型的值賦給int類型的變量會出錯。而i += j等效于i = (int)(i + j),對long類型的值做了強制轉換(cast to int).

Also see JAVA語言規范中關于復合賦值運算符 jls-15.2.26.2

作者:。淑女范erり
來源鏈接:https://www.cnblogs.com/ofyou/p/Compoun-Assignment-Operators.html

贊(3316)
未經允許不得轉載:>貴州網站建設公司 » Java復合賦值運算符(Compound Assignment Operators)
国产欧美精品