Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
其他包装器对象在java中不使用常量池的方式和原因_Java - Fatal编程技术网

其他包装器对象在java中不使用常量池的方式和原因

其他包装器对象在java中不使用常量池的方式和原因,java,Java,为了节省内存,Java“重用”了值在以下范围内的所有包装器对象。 所有布尔值(true和false) 所有字节值 从\u0000到\u007f的所有字符值(即十进制的0到127) 从-128到127的所有短值和整数值。 例如: 对于Double、Long,使用常量池有什么不同? 例如: 浮点数的精度有限;但回想一下你在学校的日子;当你学习数学时,你听说 从这个意义上说,我的答案是一个问题:你能告诉我们要在0.01和0.02之间缓存多少个数字吗 当然,答案是——任何两个浮点数之间都有无限个实数。因

为了节省内存,Java“重用”了值在以下范围内的所有包装器对象。 所有布尔值(
true
false

所有字节值

\u0000
\u007f
的所有字符值(即十进制的
0
127

-128
127
的所有短值和整数值。 例如:

对于Double、Long,使用常量池有什么不同? 例如:


浮点数的精度有限;但回想一下你在学校的日子;当你学习数学时,你听说

从这个意义上说,我的答案是一个问题:你能告诉我们要在0.01和0.02之间缓存多少个数字吗


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

浮点数的精度有限;但回想一下你在学校的日子;当你学习数学时,你听说

从这个意义上说,我的答案是一个问题:你能告诉我们要在0.01和0.02之间缓存多少个数字吗


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

在我看来,
Double
Float
必须有很多值来解释,不要让它们持有现金,换句话说,这是无效的


Long
Boolean
也有它们的现金(在
Boolean
的情况下,这是两个简单的最终变量
false
true

在我看来
Double
Float
有很多值需要说明,不要让它们持有现金,换句话说,这是无效的


Long
Boolean
也有自己的现金(在
Boolean
的情况下,两个最终变量
false
true
很简单)

只有常用值保存在常量池中。长值比小整数要少见得多,而且在使用双值时根本没有常见的模式。因为有很多
Long
s和
double
s?有两个可能的布尔值。在-128到127之间有256个整数。那个范围有多少双打?对许多人来说,简单地选择经常使用的值,以便缓存它们是有意义的,这并不是一件容易的事情。您的Double示例并不一定是这样。API允许将值保存到。只有常用值保存在常量池中。长值比小整数要少见得多,而且在使用双值时根本没有常见的模式。因为有很多
Long
s和
double
s?有两个可能的布尔值。在-128到127之间有256个整数。那个范围有多少双打?对许多人来说,简单地选择经常使用的值,以便缓存它们是有意义的,这并不是一件容易的事情。您的Double示例并不一定是这样。API允许对值进行修改。
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