2

java里128有何魔力? 聊聊Integer的缓存

 2 years ago
source link: https://lichuanyang.top/posts/64970/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

java里128有何魔力? 聊聊Integer的缓存

发表于

2016-12-02 更新于 2022-02-21

阅读次数: 134 Valine: 0

Integer类实质上也是一个普通的java类,即使值相同,也是不同的对象。

        Integer a = <span class="hljs-number">148</span>;
        Integer b = <span class="hljs-number">148</span>;
        System.out.println(a==b);`</pre>

这时输出为false. 很容易理解。

但是如果把值换成128以下的数,比如48.

<pre class="prettyprint">`        Integer a = <span class="hljs-number">48</span>;
        Integer b = <span class="hljs-number">48</span>;
        System.out.println(a==b);`</pre>

这时就会发现输出变成了true。原因是jdk对128以下的整数作了缓存,当声明两个值为48的Integer对象时,其实是指向同一位置。

当然也可以强制声明一个新的Integer对象。

<pre class="prettyprint">`        Integer a = <span class="hljs-number">48</span>;
        Integer b = <span class="hljs-keyword">new</span> Integer(<span class="hljs-number">48</span>);
        System.out.println(a==b); 

这时输出就变成false了


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK