为了节省内存,Java"重用"了所有值在以下范围内的包装对象。所有布尔值(true
和false
(
所有字节值
从 u0000
到 u007f
的所有字符值(即 0
以十进制表示127
(
从 -128
到 127
的所有短整型和整数值。例如:
Integer i1=7;
Integer i2=7;
System.out.println(i1==i2);//true
对于双倍,长以及使用恒定池有何不同?例如:
Double d1=7.2;
Double d2=7.2;
System.out.println(d1==d2);//false
浮点数的精度是有限的; 但回想一下你在学校的日子; 当你学习数学时,你听说过实数......
从这个意义上说,我的回答是问你的一个问题:你能告诉我们在 0.01 和 0.02 之间缓存多少个数字吗?!
当然:答案是 - 任何两个浮点数之间存在无限数量的实数。因此,绝对没有办法缓存这些数字。
,Double
和Float
有很多价值观来推理不要让他们维持现金,换句话说,这是无效的。
Long
和Boolean
也有现金(在Boolean
的情况下,简单的两个最终变量false
和true
(