在Java中比较Integers的确切行为是什么?

时间:2017-11-16 09:01:05

标签: java

据我所知,由于Java自动装箱,我可以这样做:

Integer i = 10;
Integer j = 10;
boolean b = i == j;

或者这个:

int ii = 10;
int jj = 10;
Integer i = ii;
Integer j = jj;
boolean b = i == j;

在这两种情况下,b都是 TRUE 。 然后,如果Integer.parseInt()函数在理论上返回一个int,我可以这样做:

Integer i = Integer.parseInt("10");
Integer j = Integer.parseInt("10");
boolean b = i == j;

在这种情况下,b也是 TRUE 。 如果我这样做,那么b也应该是真的:

Integer i = Integer.parseInt("200");
Integer j = Integer.parseInt("200");
boolean b = i == j;

实际上这里b FALSE 。任何人都知道发生了什么?感谢。

1 个答案:

答案 0 :(得分:1)

你永远不应该在整数之间使用==它有时只是因为某些值(我认为低于128)由于性能原因而被Integer.valueOf()缓存。