![]() |
1
30
编辑:规范使 一些 装箱转换的保证。从 section 5.1.7 :
实施 可以 用大一点的游泳池,小心点。 我愿意 真的? 但要避免编写依赖于此的代码。不是因为它可能会失败,而是因为它不明显——很少有人能很好地了解规范。(我以前认为它依赖于实现。)
你应该使用
或
请注意,即使保证自动氧化使用固定值,其他调用方也可以始终创建单独的实例。 |
![]() |
2
7
如果要比较任何对象的值,请使用
即使(尤其是)如果这些对象是基本包装类型,那么也可以是byte、character、short、integer、long、float、double和boolean。
“
只使用
|
![]() |
3
4
输出: “他们平等吗?0“ 答: 不,他们不平等。必须使用.equals或比较其基元值。 |
![]() |
4
4
还有:
因此,在某些情况下,==会起作用,而在许多其他情况下,==不会起作用。始终使用.equals是安全的,因为您不能(通常)授予获取实例的方式。 如果速度是一个因素(大多数等于从一个==比较开始,或者至少他们应该这样做),并且您可以保证它们是如何分配的,并且它们适合上述范围,那么==是安全的。 有些虚拟机可能会增加该大小,但是假设langauge规范指定的最小大小比依赖特定的虚拟机行为更安全,除非您确实需要这样做。 |
![]() |
5
2
equals(object o)方法的实现几乎总是以
所以使用
我建议总是使用
*当然,有几次你不应该接受这个建议。 |
![]() |
6
1
一般的答案是 不 ,您不能保证对于相同的数值,您得到的长对象是相同的(即使您限制自己使用long.valueof())。 但是,有可能通过首先尝试测试引用的相等性(使用==),然后如果失败,则尝试等于()来提高性能。这一切都取决于附加测试和方法调用的比较成本。您的里程可能会有所不同,但值得尝试一个简单的循环测试,看看哪个更好。 |
![]() |
7
1
值得注意的是,如果自动装箱的值可用,那么它们将使用池对象。这就是为什么(整数)0=(整数)0但(整数)128!=(整数)128,用于Java6U13 |
![]() |
8
1
我喜欢从视觉上看结果:
|
![]() |
9
0
实例:
这些是不同的对象实例,但根据整数的相等性是相等的,因此必须使用
在这种情况下,只有一个
|
|
synthax · 具有容差级别的双精度哈希方法 7 年前 |
![]() |
Relaxsingh · 附加导师程序无法正常工作***阅读说明*** 7 年前 |
|
user8589267 · 我的equals方法有什么问题? 7 年前 |
![]() |
James W. · 带有通配符的java黑名单 8 年前 |