初学者对自动装箱和自动拆箱的认识(IntegerCache的缓存数组)
2017-12-03 22:36
337 查看
自己对自动装箱和拆箱的一些认识,希望对大家有所帮助,不足和错误之处还望之处。
自动装箱,自动拆箱调用的方法:
自动装箱调用的方法: java源码如下:
Integer类中有个IntegerCache的静态内部类(类级内部类),里面对一些常用的int数字,准确的说是-128到127之间的数字进行Integer对象的创建,并放在一个静态缓存数组中(Integer cache[])。
Integer i = 100; 补全的实际代码为: Integer i = Integer.valueOf(100);由于100在缓存的数值范围内(-128——127)所以,并没有创建新的Integer对象,而是引用IntegerCache内部的Integer cache []数组中的对象(静态数据,该类对象所共有)。
Integer j = 200; 补全的实际代码为:Integer i = Integer.valueOf(100);但是其调用的确实new Integer(200);构造器进行对象创建。
举例:
结果是,true true false true
拆箱调用的是
java源码如下:
自动装箱,自动拆箱调用的方法:
自动装箱调用的方法: java源码如下:
private static class IntegerCache{ static final Integer cache[]; static{ 对-128到127对象的创建 } } public static Integer valueOf(int i){ if(i <= IntegerCache.high && i >= IntegerCache.low) return IntegerCache.chache[i - IntegerCache.low]; return new Integer(i); }
Integer类中有个IntegerCache的静态内部类(类级内部类),里面对一些常用的int数字,准确的说是-128到127之间的数字进行Integer对象的创建,并放在一个静态缓存数组中(Integer cache[])。
Integer i = 100; 补全的实际代码为: Integer i = Integer.valueOf(100);由于100在缓存的数值范围内(-128——127)所以,并没有创建新的Integer对象,而是引用IntegerCache内部的Integer cache []数组中的对象(静态数据,该类对象所共有)。
Integer j = 200; 补全的实际代码为:Integer i = Integer.valueOf(100);但是其调用的确实new Integer(200);构造器进行对象创建。
举例:
public static void main(String[] args) { Integer a=100; Integer b=100; Integer c=200; Integer d=200; System.out.println(a==b); //1 System.out.println(a==100); //2 System.out.println(c==d); //3 System.out.println(c==200); //4 }
结果是,true true false true
拆箱调用的是
java源码如下:
private final int value; public Integer(int value){ this.value = value; } public int intValue(){ return value; }
相关文章推荐
- JDK5.0自动装箱拆箱注意IntegerCache的范围
- 第五天04 JAVA基础语法(认识对象--自动装箱、拆箱、数组基础[一维、二维数组]、for循环、数组对象、字符串对象)(学习笔记)
- 1.4--1.5.4 泛型类A<Integer>与接口Interface A<Integer>、自动装箱/拆箱Integer->int、菱形运算符<>、数组协变、通配符?
- 关于Integer自动装箱和拆箱的小知识
- java学习之旅64--常用类_自动装箱和拆箱_缓存处理
- JavaSE8基础 Integer与int自动转换 自动装箱与拆箱
- Integer自动装箱和拆箱和比较
- Integer自动装箱拆箱
- java自动装箱、拆箱——Integer细节
- Java自动装箱和拆箱,包装类缓存机制和JVM调节
- 由自动装箱和拆箱引发我看Integer源码
- Integer自动装箱、拆箱问题(转)
- Integer自动拆箱与自动装箱的注意事项
- Integer的自动拆箱和自动装箱的陷阱(整型数-128到127的值比较问题)
- java Integer与int的装箱(缓存)与拆箱
- 由自动装箱和拆箱引发我看Integer源码
- 64_常用类_自动装箱和拆箱_缓存处理
- integer自动装箱拆箱&String内存分配测试
- Integer自动装箱拆箱bug,创建对象在-128到127
- Integer的自动装箱与拆箱