Integer自动拆箱与自动装箱的相关问题

简介: Integer自动拆箱与自动装箱的相关问题
问题1


Integer a = 9;
        int b = 9;
        boolean f = a==b;


这里的输出是true,通过断点分析发现,在进行**==**判断的时候Integer类型的a拆箱,然后再对像个int类型的数据进行比较


问题2


Integer a = 9;
        int b = 9;
        boolean ff = a.equals(b);


这里自己先分析一下,应该是先对b进行装箱,让后再进行equal比较。断点分析一下,确实如此


通过断点测试发现:一个Integer·数据和一个int数据进行+,-,*,/,%运算都是先拆箱成int类型的数据在进行运算的


个人看法:开发jdk的类代码的人都是大牛中的大牛,考虑问题一定很完全,会找到之间复杂度与空间复杂度对小的实现来完成。所以自动拆箱与自动装箱的过程也就不难理解了


问题3


Integer i=null;
        int j=i;


运行:


报错,NullPointerException


分析:i是Integer类型的值为null的对象,第二行,i进行拆箱调用intValue()方法代码如下


    public int intValue() {
        return value;
    }


从代码中可以发现return返回value,但实际上他写完整是:this.value 。所以当Integer对象为null拆箱时,会报空指针异常。


问题4


        Integer a=127;
        Integer b=127;
        Integer c=128;
        Integer d=128;
        System.out.println(a==b);
        System.out.println(c==d);


不妨先想想这个的输出结果,乍一看立马就会脱口而出两个true。


但实际上是true,false。


原因:


Integer的值在-128到127时,Integer对象是在IntegerCache.cache产生,会复用已有对象,也就是说,这个区间的Integer可以直接用等号进行判断。

Integer的值在-128到127之外时,Integer对象在堆上产生,不会复用已有对象,用等号会返回false

相关文章
|
3月前
|
存储 Java 编译器
Java零基础(17) - 自动拆箱与自动装箱
【8月更文挑战第17天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
44 3
|
4月前
|
存储 安全 Java
day7:基本类型转换、包装类、自动装箱、自动拆箱
【7月更文挑战第7天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
38 3
|
5月前
包装类(Integer举例)
包装类(Integer举例)
|
缓存 Java 编译器
自动拆箱与装箱
自动拆箱与装箱
|
缓存 Java
包装类(装箱&拆箱&数据类型转换)
​ 在Java5 中添加了两个新特性,那就是自动装箱和拆箱,因为基本类型的广泛使用,但是Java 又是面向对象的语言,所以提供了包装类型的支持。
50 0
|
存储 缓存 Java
Java基本类型和包装类什么情况下判断相等(“==“或“equals“)?
Java基本类型和包装类什么情况下判断相等(“==“或“equals“)?
255 0
Java基本类型和包装类什么情况下判断相等(“==“或“equals“)?
|
Java API
Java开发——18.常用类(包装类,拆箱和装箱;BigInteger+BigDecimal)
Java中只有两种数据类型:基本数据类型和引用数据类型。
Java开发——18.常用类(包装类,拆箱和装箱;BigInteger+BigDecimal)
|
Java
Java中包装类、int和String类型相互转换、自动拆箱和自动装箱及字符串数据排序案例
包装类、int和String类型相互转换、自动拆箱和自动装箱及字符串数据排序案例的简单示例
160 0
Java中包装类、int和String类型相互转换、自动拆箱和自动装箱及字符串数据排序案例
|
缓存 Java 编译器
包装类的自动装箱拆箱,==运算符及equals方法
包装类的自动装箱拆箱,==运算符及equals方法详解
153 0
包装类的自动装箱拆箱,==运算符及equals方法