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