java ==运算符

Mic*_*Ang 10 java operators

可能重复:
奇怪的Java拳击

嗨,

有人可以解释为什么最后一个打印返回false吗?

int a = 100;
int b = 100;

System.out.println(a == b); // prints true

Integer aa = 100;
Integer bb = 100;

System.out.println(aa == bb); // prints true

Integer aaa = 1000;
Integer bbb = 1000;

System.out.println(aaa == bbb); // prints false
Run Code Online (Sandbox Code Playgroud)

谢谢迈克尔

Ami*_*ani 14

第二个打印评估为true的原因是因为Integer类缓存了前128个Integer对象.你想用.equals

  • IMO,任何使用`==`来比较*any*`Object`的值的人都要求被烧毁. (6认同)
  • 是的,这是正确的答案.另见:http://www.owasp.org/index.php/Java_gotchas"不可变对象/包装类缓存" (2认同)
  • 这可能是我最不喜欢Java的"功能".谈论不一致. (2认同)