自动装箱和自动拆箱:int与Integer(源码详解) |
您所在的位置:网站首页 › java中long和int的区别 › 自动装箱和自动拆箱:int与Integer(源码详解) |
一、基本数据类型与对象的差别
基本数据类型不是对象,也就是使用int、double、boolean等定义的变量、常量。 基本数据类型没有可调用的方法 int i = 1; //后面没有可以被调用的方法 Integer i = 1;//后面有很多方法可以被调用Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。 Java 为每个原始类型提供了包装类型: 原始类型: boolean,char,byte,short,int,long,float,double包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double 二、什么是自动装箱拆箱基本数据类型的自动装箱、拆箱是从J2SE 5.0开始提供的功能。 如: //① 创建一个类的对象实例时 Class a = new Class(paramenter); //② 创建一个Integer对象时,却可以 Integer i =100;//自动装箱 Integer i = Integer.valueOf(100); //③ int t = i;//自动拆箱 int t = i.intValue(); //④ System.out.println(i++);//运算时,自动拆箱 //⑤ Integer a =new Integer(3); Integer b =3; //将3自动装箱成Integer类型 int c =3; System.out.println(a==b);//false 两个引用没有引用同一对象 System.out.println(a==c);//true a自动拆箱成int类型,再和c比较实际上,当执行语句②时,系统为我们执行了: Integer i = Integer.valueOf(100);此也就是基本数据类型的自动装箱功能; 执行语句③时,实际执行了int t = i.intValue();自动拆箱功能; 语句④,运算时,也可以进行拆箱。 三、Integer的自动装箱:Integer.valueOf(int i);Integer.java源码 public static Integer valueOf(int i){ if(i>=-128 && i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |