我想确定Java中的某些内容:如果我有一个Character,Integer或Long以及类似的东西,我应该使用equals还是==足够?
我知道使用字符串不能保证每个唯一字符串只有一个实例,但是我不确定其他盒装类型。
我的直觉是使用equals,但我想确保自己没有浪费性能。
编辑:规范为装箱转换提供了一些保证。从5.1.7节开始:
如果要装箱的值p为true,false,一个字节,介于\ u0000到\ u007f之间的char或-128和127之间的整数或短数,则令r1和r2为任何两次装箱转换的结果的p。r1 == r2总是这样。
请注意,该实现可以使用更大的池。
我确实会避免编写依赖于此的代码。不是因为它可能会失败,而是因为它并不明显-很少有人会非常了解规范。(我以前认为这是依赖于实现的。)
您应该使用equals
或比较基础值,即
if (foo.equals(bar))
要么
if (foo.intValue() == bar.intValue())
请注意,即使保证自动装箱使用固定值,其他调用者也始终可以创建单独的实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句