我想确定一下 Java 中的一些事情:
如果我有一个字符、一个整数或一个长整型以及诸如此类的东西,我应该使用 equals 还是 == 就足够了?
我知道对于字符串,不能保证每个唯一字符串只有一个实例,但我不确定其他装箱类型。
我的直觉是使用 equals,但我想确保我没有浪费性能。
编辑:规范使some拳击转换的保证。从第5.1.7节:
如果装箱的值 p 为真,
false,一个字节,范围内的一个字符
\u0000 到 \u007f,或者 int 或短整型
-128 到 127 之间的数字,然后令
r1 和 r2 是任意两个的结果
p的拳击转换。总是
r1 == r2 的情况。
实施情况can请注意,使用更大的游泳池。
I would really不过,请避免编写依赖于此的代码。不是因为它可能会失败,而是因为它并不明显——很少有人会那么了解该规范。 (我之前认为它取决于实现。)
你应该使用equals
或比较基础值,即
if (foo.equals(bar))
or
if (foo.intValue() == bar.intValue())
请注意,即使保证自动装箱使用固定值,其他调用者也始终可以创建单独的实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)