【发布时间】:2013-07-05 17:51:44
【问题描述】:
我到处读到,当你在 Java 中定义一个介于 -128 到 127 之间的整数时,它不会创建一个新对象,而是返回一个已经创建的对象。
除了让新手程序员将 Integer 对象与 == 进行比较以查看它们是否是相同的数字之外,我认为这样做没有任何意义,但我认为这很糟糕,因为他们认为他们可以比较任何 Integer使用==,并且还在教授任何编程语言的不良做法:将两个“不同”对象的内容与==进行比较。
这样做有什么其他原因吗?还是在设计 JavaScript 中的可选分号之类的语言(在我看来)时,这只是一个错误的决定?
编辑:我在这里看到他们解释了这种行为:Why does the behavior of the Integer constant pool change at 127?
我问的是为什么他们将其设计为具有这种行为,而不是为什么会发生这种行为。
【问题讨论】:
-
当新对象不可变且可以共享时,分配新对象并占用内存感觉有点不必要。
-
也许内存优化是一个答案,别想了。
-
它节省内存,速度更快,并减少了垃圾收集器的压力。重用对象可以显着加快速度,因此某些选项会将整数缓存大小增加到 10,000 或 20,000。