小编Gem*_*ith的帖子

Java如何处理原始数字和参考数字之间的长时间比较?

我已经在笔记本电脑上尝试了以下源代码(Oracle HotSpot JVM,JDK 1.8、64位):

Long l;
Long l1 = 100L;
Long l2 = 100L;
System.out.println(Long.valueOf(100L) == Long.valueOf(100L));
System.out.println((l = 100L) == Long.valueOf(100L));
System.out.println(l1 == l2);
System.out.println(Long.valueOf(128L) == Long.valueOf(128L));
System.out.println(Long.valueOf(129L) == 129L);
System.out.println(Long.valueOf(255L) == new Long(255L));
Run Code Online (Sandbox Code Playgroud)

然后我在IntelliJ IDEA Community 2019.1中反编译了源代码以获得以下内容:

Long l1 = 100L;
Long l2 = 100L;
System.out.println(100L == 100L);
System.out.println(100L == 100L);
System.out.println(l1 == l2);
System.out.println(128L == 128L);
System.out.println(Long.valueOf(129L) == 129L);
System.out.println(255L == new Long(255L));
Run Code Online (Sandbox Code Playgroud)

我有答案:

true
true
true
false
true
false
Run Code Online (Sandbox Code Playgroud)

我已经知道,从原始数字到相应参考数字的整数赋值将自动装箱。如果数字在[-128,127]中,则将使用缓存,这意味着第4、5、6、7、9行的结果是合理的。

但是,我很好奇Java如何处理第8行中参考数字和原始数字之间的比较?换句话说,原始数实际上是如何存储在Oracle HotSpot JVM的内存中的?

到目前为止,我还没有找到任何帮助。任何建议将不胜感激。 …

java

6
推荐指数
1
解决办法
146
查看次数

标签 统计

java ×1