【发布时间】:2011-08-07 21:33:34
【问题描述】:
在我的笔记中找到以下内容,但我无法理解:
原始类型包装类实现有限数量的缓存 价值观。
这保证了有限数量的深度相等的包装对象是 也很浅地相等: 如果o1.equals( o2 )那么o1 == o2。
例如,new Integer( 0 ) == new Integer( 0 )。
一般来说,这并不总是有效。
例如,新整数(666)==新整数(666)
可能不成立。
缓存的原因是它可以节省内存。
一般来说,缓存适用于“小”原始值。
我不明白这是什么意思,或者深 (.equals()) 和浅 (==) 之间的区别是什么。我知道在实践中,.equals 必须用于对象,== 用于 Integral 值,但实际的推理暗示了我。
我假设浅的名称可能只是检查两个值的类型和名称是否相同,而深层检查两个变量是否指向同一个对象?不过,我不明白缓存将如何在这里发挥作用,也不知道它为什么有用。
【问题讨论】:
-
好吧,你的笔记完全错了。
new Integer( 0 ) == new Integer( 0 )将永远、永远、永远为真,new Integer( 666 ) == new Integer( 666 )也不会。我建议你问你的教授澄清他的意思,因为如果他期望在考试中这样,他对 Java 知之甚少。
标签: java caching deep-copy shallow-copy