<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## [賦值](https://lingcoder.gitee.io/onjava8/#/book/04-Operators?id=%e8%b5%8b%e5%80%bc) 運算符的賦值是由符號`=`完成的。它代表著獲取`=`右邊的值并賦給左邊的變量。右邊可以是任何常量、變量或者可產生一個返回值的表達式。但左邊必須是一個明確的、已命名的變量。也就是說,必須要有一個物理的空間來存放右邊的值。舉個例子來說,可將一個常數賦給一個變量(A = 4),但不可將任何東西賦給一個常數(比如不能 4 = A)。 基本類型的賦值都是直接的,而不像對象,賦予的只是其內存的引用。舉個例子,a = b ,如果 b 是基本類型,那么賦值操作會將 b 的值復制一份給變量 a, 此后若 a 的值發生改變是不會影響到 b 的。作為一名程序員,這應該成為我們的常識。 如果是為對象賦值,那么結果就不一樣了。對一個對象進行操作時,我們實際上操作的是它的引用。所以我們將右邊的對象賦予給左邊時,賦予的只是該對象的引用。此時,兩者指向的堆中的對象還是同一個。代碼示例: ~~~ // operators/Assignment.java // Assignment with objects is a bit tricky class Tank { int level; } public class Assignment { public static void main(String[] args) { Tank t1 = new Tank(); Tank t2 = new Tank(); t1.level = 9; t2.level = 47; System.out.println("1: t1.level: " + t1.level + ", t2.level: " + t2.level); t1 = t2; System.out.println("2: t1.level: " + t1.level + ", t2.level: " + t2.level); t1.level = 27; System.out.println("3: t1.level: " + t1.level + ", t2.level: " + t2.level); } } ~~~ 輸出結果: ~~~ 1: t1.level: 9, t2.level: 47 2: t1.level: 47, t2.level: 47 3: t1.level: 27, t2.level: 27 ~~~ 這是一個簡單的`Tank`類,在`main()`方法創建了兩個實例對象。 兩個對象的`level`屬性分別被賦予不同的值。 然后,t2 的值被賦予給 t1。在許多編程語言里,預期的結果是 t1 和 t2 的值會一直相對獨立。但是,在 Java 中,由于賦予的只是對象的引用,改變 t1 也就改變了 t2。 這是因為 t1 和 t2 此時指向的是堆中同一個對象。(t1 原始對象的引用在 t2 賦值給其時丟失,它引用的對象會在垃圾回收時被清理)。 這種現象通常稱為別名(aliasing),這是 Java 處理對象的一種基本方式。但是假若你不想出現這里的別名引起混淆的話,你可以這么做。代碼示例: ~~~ t1.level = t2.level; ~~~ 較之前的做法,這樣做保留了兩個單獨的對象,而不是丟棄一個并將 t1 和 t2 綁定到同一個對象。但是這樣的操作有點違背 Java 的設計原則。對象的賦值是個需要重視的環節,否則你可能收獲意外的“驚喜”。
                  <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>

                              哎呀哎呀视频在线观看