我在笔记中发现了以下内容,但我无法理解它:
原始类型包装类为有限数量的值实现缓存。
这保证了有限数量的深度相等的包装对象也是浅度相等的: 如果o1.equals(o2)
,则o1 == o2
。
例如:new Integer(0) == new Integer(0)
。
总体而言,这种方法并不总是奏效。
例如:new Integer(666) == new Integer(666)
可能不成立。
缓存的原因是可以节省内存。
通常情况下,缓存适用于“小”原始值。
我不明白这意味着什么,或者深度(.equals())和浅度(==)相等之间的区别。我知道在实践中,必须使用.equals()处理对象,而对于整数值,则使用==,但是这一切的实际原因我不明白。
我认为,根据名称,浅层可能只检查两个值是否具有相同的类型和名称,而深层则检查两个变量是否指向同一个对象?然而,我不明白缓存如何发挥作用,或者为什么会有用。
new Integer(0) == new Integer(0)
永远不会成立,new Integer(666) == new Integer(666)
也不会成立。我建议你向你的教授询问他的意思,因为如果他期望在考试中出现这种情况,那么他对Java的了解很少。 - Mark Peters