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

标签 java

为了节省内存,Java“重用”其值在以下范围内的所有包装对象。 所有 boolean 值(truefalse)

所有字节值

\u0000\u007f 的所有字符值(即十进制的 0127)

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

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/

相关文章:

关于声明可比较对象列表的 Java 问题

java - IBM process server v8.5.5 - 由 : java. lang.IllegalStateException 引起:不支持 BO 服务

java - android.view.ViewRoot$CalledFromWrongThreadException :

java - 将算法 C 翻译成 Python

java - 为什么我无法调用带有错误类型参数的方法?

java - 链表的自定义迭代器

java - 为什么在java中用一些数组(原始数据类型)替换对象(类)会显着减少运行时间?

java - 使用 org.json 库格式化 LocalDateTime 时出现问题

java - Eclipse Kepler 在警告上显示错误标记

JavaFX ListView 不支持 String.format?