Java基础:基本数据类型包装类使用的常量池技术
2020-07-13 04:53
225 查看
Byte,Short,Integer,Long 默认创建了[-128,127]的相应类型的缓存数据
Character创建了[0,127]范围的缓存数据
Boolean直接返回True Or False
如果超出对应范围,仍会去创建新的对象
Integer缓存源代码:
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
应用场景
Integer i1=40; Java编译时会直接将代码封装为Integer
i1=Integer.valueOf(40); 从而使用常量池中的对象
例子:
Integer i1 = 40; Integer i2 = 40; Integer i3 = 0; Integer i4 = new Integer(40); Integer i5 = new Integer(40); Integer i6 = new Integer(0); System.out.println("i1==i2 " + (i1 == i2)); System.out.println("i1==i2+i3 " + (i1 == i2 + i3)); System.out.println("i1==i4 " + (i1 == i4)); System.out.println("i4==i5 " + (i4 == i5)); System.out.println("i4==i5+i6 " + (i4 == i5 + i6)); System.out.println("40==i5+i6 " + (40 == i5 + i6));
结果:
i1==i2 true i1==i2+i3 true i1==i4 false i4==i5 false i4==i5+i6 true 40==i5+i6 true
解释:
i4==i5+i6 true 是因为+运算符不适用于Integer对象,首先i5和i6进行自动拆箱操作,进行数值相加,即i4==40,然后Integer无法与数值比较,所以i4
自动拆箱成40,所以最后时数值比较 40==40。
摘抄自JavaGuide
相关文章推荐
- java基础-String、基本数据类型对象包装类
- 黑马程序员--java基础复习之String类StringBuffer及基本数据类型包装类
- 【java基础】——String类和基本数据类型包装类
- 黑马程序员——Java基础---String类和基本数据类型对象包装类
- 【深入Java基础】java八种基本数据类型及其包装类
- Java基础视频教程第13天_String类、基本数据类型包装类
- 黑马程序员--Java基础--基本数据类型与包装类
- java基础教程:常用对象之基本数据类型包装类(23)
- java基础-----String和基本数据类型包装类
- JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)
- Java基础(2)- 基本数据类型与其包装类
- 黑马程序员——Java基础---String类和基本数据类型包装类
- java基础-API-String类、基本数据类型对象包装类
- 黑马程序员-JAVA基础-基本数据类型对象包装类
- 黑马程序员——Java语言基础:String、基本数据类型对象包装类
- Java基础回顾--基本数据类型包装类1【Integer与int解惑】
- Java基础之011-Java基本数据类型及其包装类
- JAVA基础——API(基本数据类型对象包装类)
- 【黑马程序员】Java基础学习技术博客——基本数据类型
- Java基础_String类和基本数据类型对象包装类