zoukankan      html  css  js  c++  java
  • int和Integer之间的区别和联系

          在工作中使用==埋下的坑这篇博文中,我们看到当使用基本类型的时候==是完全没有问题的,部分或者混合使用基本类型和装箱基本类型的时候,就可能出现问题了,那么我们可能会想基本类型和装箱基本类型有什么区别和联系哪?下面以int和Integer为例讲讲我的看法。int和Integer非常的像,所有的基本类型和其对应的装箱基本类型都非常的像,但是他们之间也是有区别的,他们之间的区别是什么哪?

    为了明白他们之间的区别和联系,我们一起看看下面这段简单的代码和罗织在代码之间的结论吧!

    1:TestIntMain.java——包含基本类型和装箱基本类型的区别和联系的结论注释

    import java.util.ArrayList;
    import java.util.List;
    
    public class TestIntMain {
        public static void main(String [] args){
    
            /**
             * 区别1:
             * int 声明的变量不能直接赋值为null
             * Integer 声明的变量能直接赋值为null
             */
    //        int _int_ = null;//不能直接赋null
            Integer _Integer_ = null;//可以直接赋null
    
            /**
             * 区别2:
             * int 声明的变量,存储就是一个数值,不能调用方法,它也没有方法可调用
             * Integer 声明的变量,是一个对象,它有对应的变量、方法,它可以自由的调用
             */
            int _int = 99;
            Integer _Integer1 = new Integer(99);
            //一个整数值,不能调用方法
    //        System.out.println("_int type is : "+_int.getClass().getSimpleName()+"_int value is : "+_int.toString());
            System.out.println("_int  value is : "+_int);
    
            //一个对象,可以调用它的方法,属性等等
            System.out.println("_Integer1 type is : "+_Integer1.getClass().getName()+"   _Integer1 value is : "+_Integer1);
    
            /**
             * 自动装箱和拆箱
             * 自动装箱:我的理解是将基本类型的变量,自动转换为装箱基本类型的对象的过程
             * 自动拆箱:我的理解是将装箱基本类型的对象,自动转换为基本类型的变量的过程
             * 1:这是在Java1.5发行版本中增加的功能
             * 2:目的是为了模糊基本类型和装箱基本类型之间的区别,减少使用装箱基本类型的繁琐性
             * 3:这样做也有一定的风险,比如:对于装箱基本类型运用==操作符几乎总是错误的,装箱的操作会导致高的开销和不必要的对象创建
             */
            int _int1 = new Integer(99);//对应的匿名对象变成了一个整数值,自动拆箱
            int _int2 = _Integer1;//_Integer1对象变成了一个整数值,自动拆箱
            //        System.out.println("_int1 type is : "+_int1.getClass().getSimpleName()+"_int1 value is : "+_int1.toString());
            System.out.println("_int1 value is : "+_int1);
    
            Integer _Integer = 99;//对应的整数值,直接给你对象也没问题,自动装箱
            System.out.println("_Integer  type is : "+_Integer.getClass().getName()+"   _Integer  value is : "+_Integer);
    
    //        List<int> list_ = new ArrayList<int>();
            List<Integer> list = new ArrayList<Integer>();
            list.add(_int);//_int 此时相当于是一个Integer类型的对象了,自动装箱
            list.add(_Integer);
        }
    }

     2:TestIntMain.class——包含基本类型和装箱基本类型的自动装箱和拆箱的实现方式

    import java.util.ArrayList;
    
    public class TestIntMain {
        public TestIntMain() {
        }
    
        public static void main(String[] args) {
            Object _Integer_ = null;//Integer _Integer_ = null; 编译后是这样的哦
            byte _int = 99;//int _int = 99; 编译后是这样的哦
            Integer _Integer1 = new Integer(99);
            System.out.println("_int  value is : " + _int);
            System.out.println("_Integer1 type is : " + _Integer1.getClass().getName() + "   _Integer1 value is : " + _Integer1);
            int _int1 = (new Integer(99)).intValue();//自动拆箱的实现方式
            int _int2 = _Integer1.intValue();//自动拆箱的实现方式
            System.out.println("_int1 value is : " + _int1);
            Integer _Integer = Integer.valueOf(99);//自动装箱的实现方式
            System.out.println("_Integer  type is : " + _Integer.getClass().getName() + "   _Integer  value is : " + _Integer);
            ArrayList list = new ArrayList();
            list.add(Integer.valueOf(_int));//自动装箱的实现方式
            list.add(_Integer);
        }
    }

     3:参考

    http://mindprod.com/jgloss/intvsinteger.html

    http://www.careerride.com/Java-QA-integer-vs-int.aspx

    https://www.quora.com/What-is-the-difference-between-an-integer-and-int-in-Java

  • 相关阅读:
    atitit.TokenService v3 qb1 token服务模块的设计 新特性.docx
    Atitit attilax在自然语言处理领域的成果
    Atitit 图像清晰度 模糊度 检测 识别 评价算法 原理
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结
    atitit。企业的价值观 员工第一 vs 客户第一.docx
    Atitit 实现java的linq 以及与stream api的比较
    Atitit dsl exer v3 qb3 新特性
    Atititi tesseract使用总结
    Atitit 修改密码的功能流程设计 attilax总结
    atitit.TokenService v3 qb1  token服务模块的设计 新特性.docx
  • 原文地址:https://www.cnblogs.com/godtrue/p/6413066.html
Copyright © 2011-2022 走看看