其他包装器对象在 Java 中如何以及为什么不使用常量池



为了节省内存,Java"重用"了所有值在以下范围内的包装对象。所有布尔值(truefalse(

所有字节值

u0000u007f 的所有字符值(即 0 以十进制表示127(

-128127 的所有短整型和整数值。例如:

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 之间缓存多少个数字吗?!

当然:答案是 - 任何两个浮点数之间存在无限数量的实数。因此,绝对没有办法缓存这些数字。

在我看来

DoubleFloat有很多价值观来推理不要让他们维持现金,换句话说,这是无效的。

LongBoolean也有现金(在Boolean的情况下,简单的两个最终变量falsetrue(

相关内容

  • 没有找到相关文章