自动装箱和自动拆箱:int与Integer(源码详解)

您所在的位置:网站首页 java中long和int的区别 自动装箱和自动拆箱:int与Integer(源码详解)

自动装箱和自动拆箱:int与Integer(源码详解)

2023-12-06 10:14| 来源: 网络整理| 查看: 265

一、基本数据类型与对象的差别

基本数据类型不是对象,也就是使用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