Java基本数据类型在常量池中的体现
老帅
基本数据类型的使用量是很大的,java常量池,在节省内存方面是一个很好的机制,相同的数据,在常量池中只要保留一份即可。
Java的8种基本类型(Byte, Short, Integer, Long, Character, Boolean, Float, Double), 除Float和Double以外, 其它六种都实现了常量池, 但是它们只在大于等于-128并且小于等于127时才使用常量池。
由如下例子可以看出:
结果如下:
等于127:
true
*****************
等于128:
false
*****************
等于-128:
true
*****************
等于-129:
false
*****************
测试Boolean
true
false
当我们给Integer赋值时,实际上调用了Integer.valueOf(int)方法,查看源码,其实现如下:
而IntegerCache实现如下:
注意cache数组是静态的。