为了节省内存,Java'重用'其值落在以下范围内的所有包装器对象。
所有布尔值(true
和false
)
所有字节值
从\u0000
到\u007f
的所有字符值(即十进制的0
到127
)
从-128
到127
的所有短整数和整数值。
例如:
Integer i1=7;
Integer i2=7;
System.out.println(i1==i2);//true
Double,Long和使用常量池有何不同? 例如:
Double d1=7.2;
Double d2=7.2;
System.out.println(d1==d2);//false
答案 0 :(得分:3)
浮点数的精度有限;但回想一下你在学校的日子;当你学习数学时,你听说过real numbers ......
从这个意义上讲,我的回答是一个问题:你能告诉我们要缓存多少个数字,比如0.01到0.02?!
当然:答案是 - 任意两个浮点数之间存在无限数量的实数。因此,这些数字绝对是没有 缓存的方式。
答案 1 :(得分:0)
在我看来,Double
和Float
有许多价值观,因为不要让他们保留cashe,换句话说,它是无效的。
Long
和Boolean
也有他们的奖金(如果是Boolean
,那么简单的两个最终变量false
和true
)