<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 復合賦值運算符`i += j`與 Java 中的`i = i + j`不同 > 原文: [https://howtodoinjava.com/puzzles/compound-assignment-operator-i-j-is-not-same-as-i-i-j-in-java/](https://howtodoinjava.com/puzzles/compound-assignment-operator-i-j-is-not-same-as-i-i-j-in-java/) 在我們的日常編程中,我們都使用過`i += j`和`i = i + j`之類的語法。 乍一看,它們看起來很相似。 實際上,在實際情況下,幾乎所有情況下它們都將產生相同的輸出。 但是,令您驚訝的是**它們并不相似**。 在運行時,當`i`和`j`屬于不同類型時,它們將得到不同對待。 讓我們看下面的例子: ```java int i = 5; double d1 = (double)i + 4.5; //necessary to satisfy compiler i += 4.5; System.out.println(i); System.out.println(d1); Output: 9 9.5 ``` 奇怪的。 是不是 兩者都期望相同,因為操作相同。 為什么它們具有不同的值? 讓我們找出答案。 ## 原因 [Java 語言規范](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html "jlsr")指出: 形式為`E1 op= E2`的復合賦值表達式與`E1 = (T)((E1) op (E2))`,等效,其中`T`為`E1`的類型,不同之處在于`E1`僅被求值一次。 因此,可以有效地將我們的原始示例代碼覆蓋如下: ```java int i = 5; double d1 = (double) i + 4.5; i = (int)(i + 4.5); //Result converted to int System.out.println(i); System.out.println(d1); Output: 9 9.5 ``` 因此,**值 9 只是從雙精度到整數轉換時精度**丟失的結果。 ## 學過的知識 始終非常小心地使用復合賦值運算符`i + = j`。 僅在處理類似數據類型時才應使用。 在不同的數據類型中,結果可能不正確。 **祝您學習愉快!** **參考** [http://stackoverflow.com/questions/8710619/java-operator](https://stackoverflow.com/questions/8710619/java-operator) [http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions .html#15.26.2](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看