本文共 639 字,大约阅读时间需要 2 分钟。
今天小编今天在学习的过程中发现了一些java的细节问题,然后感觉超级奇怪,然后通过查阅才发现是平常不注意的细节问题。
首先看如下代码:
public static void main(String[] args){ Integer a = 68; Integer b = 68; Integer c = 127; Integer d = 127; Integer e = 128; Integer f = 128; System.out.print("a和b:"); System.out.println(a == b); System.out.print("c和d:"); System.out.println(c == d); System.out.print("a和b:"); System.out.println(e == f); }
大家猜一下输出的是什么呢?是不是第一感觉觉得输出的都是true呢?哈哈哈哈。= =
其实答案是两个true和一个false。
这是为什么呢?
这里涉及到一个自动装箱问题,显而易见,Integer类在进行赋值的过程中如果超过127就会进行一个地址比较,在jvm中地址是不一样的才发生一个false返回结果。此时我们必须明白就是,java中Integer类是超过128就自动装箱了,那么有正必有负,它的负值范围在多少呢?正确来讲是-128~127之间。如果不信的朋友可以亲手试试。
总之,在这里要记住了喂!!~
转载地址:http://untrn.baihongyu.com/