在我的笔记中找到以下内容,但我无法理解:
原始类型包装类为有限数量的值实现缓存。
这保证了有限数量的深度相等的包装对象也是浅相等的: Ifo1.equals( o2 )
theno1 == o2
。
例如,new Integer( 0 ) == new Integer( 0 )
。
一般来说,这并不总是有效。
例如,new Integer(666) == new Integer(666)
可能不成立。
缓存的原因是它可以节省内存。
一般来说,缓存适用于“小”原始值。
我不明白这是什么意思,或者深(.equals())和浅(==)等于之间有什么区别。我知道在实践中, .equals 必须用于对象, == 用于 Integral 值,但对此的实际推理暗示了我。
我假设浅的名称可能只是检查两个值的类型和名称是否相同,而深层检查两个变量是否指向同一个对象?不过,我看不出缓存将如何在这里发挥作用,或者为什么它会有用。