为了节省内存,Java“重用”其值在以下范围内的所有包装对象。
所有 boolean 值(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
最佳答案
float 的精度是有限的;但回想一下你在学校的日子;当你学习数学时,你听说过 real numbers ...
从这个意义上说,我的回答是向您提出一个问题:您能否告诉我们要缓存多少个数字,例如 0.01 和 0.02?!
当然:答案是 - 任意两个 float 之间存在无限数量的实数。因此,绝对没有方法可以缓存这些数字。
关于java - java中其他包装对象如何以及为什么不使用常量池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44677671/