Why are 2 Long variables not equal with == operator in Java?

前端 未结 3 1208
借酒劲吻你
借酒劲吻你 2020-12-17 09:05

I got a very strange problem when I\'m trying to compare 2 Long variables, they always show false and I can be sure they have the same number value by debugging in Eclipse:<

3条回答
  •  醉梦人生
    2020-12-17 09:24

    == compares references, .equals() compares values. These two Longs are objects, therefore object references are compared when using == operator.

    However, note that in Long id1 = 123L; literal value 123L will be auto-boxed into a Long object using Long.valueOf(String), and internally, this process will use a LongCache which has a [-128,127] range, and 123 is in this range, which means, that the long object is cached, and these two are actually the same objects.

提交回复
热议问题