<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國際加速解決方案。 廣告
                Long中有個小小的陷阱,就是在-128至127范圍內,Long.valueOf(long l)返回的Long的實例是相同的,而在此范圍之外每次使用valueOf(long l)時,返回的實例都是不同的。 舉例: ~~~ System.out.println(Long.valueOf(-129) == Long.valueOf(-129)); // false System.out.println(Long.valueOf(-128) == Long.valueOf(-128)); // true System.out.println(Long.valueOf(127) == Long.valueOf(127)); // true System.out.println(Long.valueOf(128) == Long.valueOf(128)); // false ~~~ 下面我們通過Long源碼進行分析一下: ~~~ public static Long valueOf(long l) { final int offset = 128; if (l >= -128 && l <= 127) { // will cache return LongCache.cache[(int)l + offset]; } return new Long(l); } ~~~ 從上面代碼中我們可以看出先判斷傳遞過來的數值是否在[-128,127]之間,如果是則直接從緩存中返回對應的引用,否則新創建一個Long的實例。所以說如果不在這個區間范圍內,返回一個新創建的Long類型引用,用==判斷就會理所當然的返回false,地址不一樣。但是如果我們使用equals方法,則會返回true,數值是一樣的。 ~~~ Long.valueOf(128).equals(Long.valueOf(128)) // true ~~~ 我們看看對于在區間范圍之內,是如何返回對應的引用?最重要的是Long類中有一個靜態的內部類LongCache,專門用于緩存-128至127之間的值。 ~~~ private static class LongCache { private LongCache(){} static final Long cache[] = new Long[-(-128) + 127 + 1]; static { for(int i = 0; i < cache.length; i++) cache[i] = new Long(i - 128); } } ~~~ 在LongCache類中定義了一個cache數組,來存儲緩存數據。我們可以看到cache數組的長度:-(-128) + 127 + 1,很明了的知道緩存數據從-128到127,后面的1代表數字0,一共256個元素。 ?valueOf這個方法設計比較好的一點是offset,它的初始值設為128,目的就是為了數組下標128處存放0,這樣就將正數和負數分隔開。
                  <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>

                              哎呀哎呀视频在线观看