精华内容
下载资源
问答
  • Java的自动装箱和自动拆箱 先来例子: ArrayList<Integer> in = new ArrayList<Integer>();//Integer类 Integer int1 = new Integer(5); in.add(1);--//1为基本数据类型int--自动装箱为Integer类 ...

    Java的自动装箱和自动拆箱

    先来例子:

    ArrayList<Integer> in = new ArrayList<Integer>();//Integer类
    		Integer int1 = new Integer(5);
    		in.add(1);--//1为基本数据类型int--自动装箱为Integer类
    		int int2 = int1;--//自动拆箱
    		int int3 = Integer.parseInt("123");--//由于包装了int基本类型为Integer,所以有了更多的方法
    		for(int i:in) {
    			System.out.println(i);
    			System.out.println(int2);
    			System.out.println(int3);
    		}
    

    在Java SE5中,为了减少开发人员的工作,Java提供了自动拆箱与自动装箱功能。

    自动装箱:自动将基本数据类型转换为包装器类类型(例如int转换为Integer类型)

    自动拆箱:就是自动将包装器类型转换为基本数据类型。(例如Integer类型转换为int类型)

    哪些类型可以自动装箱和自动拆箱?

    基本数据类型可以进行自动装箱和拆箱的操作
    image

    展开全文
  •  答:自动装箱和自动拆箱机制是JDK5后被引入,众所周知java是一种面向对象语言,一切都以对象(Object)为基础,作为对 象,都可以使用toString(),equals(),hashCode()等方法,在java中分为基本数据...

    仔细谈一下自动装箱和自动拆箱

    1.问:为什么要引入这两个机制?

       答:自动装箱和自动拆箱机制是JDK5后被引入的,众所周知java是一种面向对象的语言,一切都以对象(Object)为基础,作为对    象,都可以使用toString(),equals(),hashCode()等方法,在java中分为基本数据类型和引用数据类型,基本数据类型是数值不能调用这些方法,所以如果使用这些方法,就必须把基本数据类型转换为对象,也就是说java为每种基本数据类型提供了对应的封装类。---->这就是自动装箱和自动拆箱。

    类型 大小 数值范围 默认值 包装类型
    byte 1字节,8bit -2^7~2^7-1 0 Byte
    short 2字节,16bit -2^15 -- 2^15-1     0 Short
    int 4字节,32bit -2^31 -- 2^31-1 0 Integer
    long 8字节,64bit -2^63 -- 2^63-1 0 Long
    float 4字节,32bit IEEE 754     0.0f Float
    double 8字节,64bit IEEE 754     0.0d Double
    char 2字节,16bit \u0000 - \uffff \u0000 Character
    boolean 1字节,8bit true,false false Boolean
    2.概念(前面已经介绍了,这里详细介绍下)
    (1)自动装箱:将基本数据类型转换为包装类型,使其能使用对象的一些属性和方法。如 Integer i =3
                实际我们执行这句话,在解释器中的执行是:Integer a=Integer.valueOf(3);
    (2)自动拆箱:将包装类型转换为基本数据类型的过程    如:Integer i = new Integer(5);

    现在就以Integer和int为例子,详细介绍下这两个的异同。
    1.int是基本数据类型,仅仅是一个数值,不能调用toString(),getClass()等方法,Integer是一个包装类,可以调用这些方法。
    2.在比较是否相等时,需要分类判断:(这里涉及自动装箱和自动拆箱操作)
    首先要介绍下 ==  和 equals:两者在基本数据类型的比较中都是比较的数值是否相等,在两个对象的引用的比较中,比较的不止是内容是否相等,还有引用所指向的内存地址是否相等
    注意:(1)String类型比较特殊,如果使用语句 String str1 =  “str”     String str2 = “str”   并且使用== 和 equals比较大小,返回值都是true,这是因为这样在String创建对象时遵循一个原则:只要先前已经创造了相同的对象存储相同的内容,那么再创建引用时并不会再开辟空间创造对象,而是直接将该引用指向已存在的对象,这样地址相同,内容也相同。但是,如果使用String str1 = new String (“str”)   String str2 = new  String (“str”)  这样创建的两个引用,同时会各自在堆内存空间中创建各自的对象空间,分别指向,因此内容相同,但是地址不同,重点来了,使用 == 比较 返回false,但是,使用equals比较返回的是true,这是因为String是一个类,它重写了equals方法,只要满足内容相同,就可以。

    (1)如果两个int类型比较大小,数值相同,使用 == 和 equals 都是返回true。
    (2)如果两个Integer类型比较大小,这里还需要细分,具体原因下述
              数值返回在-128到127之间的值,只要数值相等,就是相等的(内容和地址都相等)
              数值在上述范围之外的,数值相等,但是地址不等。
              解释:
     public static Integer valueOf(int i) {
            assert IntegerCache.high >= 127;
            if (i >= IntegerCache.low && i <= IntegerCache.high)
                return IntegerCache.cache[i + (-IntegerCache.low)];
            return new Integer(i);
        }
    这是jdk中的源码,由此可以看出,在堆内存中创建对象与刚才讲述的String类似,这里,如果使用自动装箱功能创建并且数值范围在-128到127,之前已经存在相同内容的对象,那么再创建对象引用就会指向堆内存中已存在的,因此地址相同,否则,重新开辟存储空间存储。同理,如果直接使用Integer i1 = new Integer (100),这种与String也类似,地址不同,返回false
    (3)如果一个Integer和int类型比较,实际过程是先将Integer自动拆箱成int类型,然后比较数值大小





    展开全文
  • 之前就遇到过类似疑惑,为什么基本数据类型有时候能当成对象用,例如一个method(object o);...它们分别对应着在jdk5之前没有自动装箱和拆箱的两个步骤: 装箱int i = 1对应: 实例化一个对象:integer

    之前就遇到过类似的疑惑,为什么基本数据类型有时候能当成对象用,例如一个method(object o);需要一个对象作为参数传入,但是int i= 1;这样的一个i可以传入,或者说这个时候的i可以当成一个对象用,

    这就是jdk5之后就有的新特性,自动装箱,意思就是本身是个基本数据类型,但是在他需要时可以直接封装成一个包装类的对象,在需要他变成基本数据类型时,他就自动拆箱变成里面的那个数据;

    它们分别对应着在jdk5之前没有自动装箱和拆箱的两个步骤:
    装箱int i = 1对应: 实例化一个对象:integer i= new integer (1);
    拆箱int i= j或者是method(i)对应:在用i当基本数据类型的时候因为i是个integer对象,需要用方法返回他的数据:
    比如method (i.intValue);
    或者是int j = i.intValue;

    展开全文
  • 之前在看书时候,看到java自动装箱和自动拆箱的时候,有点迷糊,一直没搞懂,后来看了一段程序演示介绍,算是清楚了.原来拆装箱原来如此简单. 以下是代码: public class IntegerDemo{ public static void main( ...

    之前在看书的时候,看到java自动装箱和自动拆箱的时候,有点迷糊,一直没搞懂,后来看了一段程序的演示介绍,算是清楚了.原来拆装箱原来如此简单.

    以下是代码:

     

    public class IntegerDemo{
       public static void main( String [] args){
           Integer a=100;
           a++=500;
           System.out.println("a:"+a);
       }
    }


    通过反编译.class文件,可以看到:

     

    //自动装箱

    Integer a=Integer.valueOf(100);

    //自动拆箱后再自动装箱.一共是两个步骤一起完成.

    a=Ingeger.valueOf(a.valueOf()+500);

    Sytem.out..println((new StringBuilder("a:")).append(a).toString());

    展开全文
  • java中有8中基本数据类型,这八种基本数据类型都有对应封装类型,下面是对应关系:int——Integerfloat——Floatdouble——Doublebyte——Bytelong——Longchar——Characterboolean——Booleanshort——Short...
  • java中自动装箱和拆箱 Java的自动装箱和拆箱 (Autoboxing and Unboxing in Java) In Java 1.5, Java added concept of autoboxing and unboxing that deal with conversion of primitive type to object and vice...
  • 有人认为所看到都是对象,事实上,在Java SE 5之前,基本类型默认并不是采用对象存在如果您想要把基本类型作为对象来处理,就必须自行转换,不过,在Java SE 5之后,为基本数据类型提供了自动装箱和拆箱功能,...
  • Java中的自动装箱和拆箱Java从1.5开始添加了自动装箱与拆箱的机制,可以让我们在Java...举个例子:装箱和拆箱对于Java的自动装箱和拆箱,我们看看源码编译后的class文件,其实装箱调用包装类的valueOf方法,拆箱调用...
  • 一....在Java SE5之前,如果要生成一个数值为10Integer对象,必须这样进行:而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10Integer对象,只需要这样就可以了:这个过程中...
  • 讲一下JDK 5引入的自动装箱拆箱自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象...
  • 很简单,下面两句代码就可以看到装箱和拆箱过程 1 //自动装箱 2 Integer total = 99; 3 4 //自动拆箱 5 int totalprim = total; 简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器...
  • 深入剖析Java装箱和拆箱自动装箱和拆箱问题是Java中一个老生常谈问题了,今天我们就来一些看一下装箱和拆箱若干问题。本文先讲述装箱和拆箱最基本东西,再来看一下面试笔试中经常遇到与装箱、拆箱相关...
  • 什么是自动装箱拆箱基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。一般我们要创建一个类的对象实例的时候,我们会这样:Class a = new Class(parameter);当我们创建一个Integer...
  • 自动装箱和拆箱是一个老生常谈问题了,今天我们谈一下我对这两个概念理解。一、自动装箱java中一共有八种基本类型数据,对于这些基本类型数据都有一个对应包装器类型。比如int——Integer等;在javaSE5...
  • //自动装箱Integer total = 99;//自动拆箱int totalprim = total;需要装箱拆箱类型有:Integer total = 99;执行上面那句代码时候,系统为我们执行了:Integer total = Integer.valueOf(99);int total...
  • Java自动装箱和自动拆箱的理解1、代码public class AutoBoxing {public static void main(String[] args) {Integer a = 1;Integer b = 2;Integer c = 3;Integer d = 3;Integer e = 321;Integer f = 321;Long g = 3L;...
  • 自动装箱自动装箱是指将基本类型变量自动转换为其对应包装器类对象。当原始值是-时,编译器会自动处理转换-作为参数传递给需要包装类对象函数。分配给包装类类型变量。请看以下示例。示例importjava.util....
  • 自动装箱和自动拆箱Java 提供了 8 种基本数据类型,每种数据类型都有其对应包装类型,包装类是面向对象类,是一种高级数据类型,可以进行一些比较复杂操作,它们是引用类型而不再基本类型了。基本类型和包装...
  • Java的自动装箱和拆箱

    2020-04-24 18:15:11
    一、什么是自动装箱自动拆箱 二、自动装箱自动拆箱的实质 三、需要注意的点 四、其他一些问题 五、总结 一、什么是自动装箱自动拆箱 自动装箱自动拆箱是在JDK5以后引入的一个特性。在学习Java的过程中,我们认识到...
  • 一、什么是自动装箱拆箱很简单,下面两句代码就可以看到装箱和拆箱过程1 //自动装箱2 Integer total = 99;34 //自动拆箱5 int totalprim = total;简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是...
  • 详解 Java 的自动装箱拆箱 (Autoboxing and unboxing)一什么是自动装箱拆箱很简单, 下面两句代码就可以看到装箱和拆箱过程// 自动装箱Integertotal=99;// 自定拆箱inttotalprim=total;简单一点说, 装箱就是自动将...
  • 一、什么是自动装箱拆箱很简单,下面两句代码就可以看到装箱和拆箱过程//自动装箱Integer total = 99;//自定拆箱int totalprim = total;简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将...
  • Java中基础数据类型与它们的包装类进行运算时,编译器会自动帮我们进行转换,转换过程对程序员是透明的,这就是装箱和拆箱,装箱和拆箱可以让我们的代码更简洁易懂耗时问题在说 Java 的自动装箱和自动拆箱之前,我们...
  • 这个是jdk1.5以后才引入的新的内容,作为秉承发表...其实按照我自己的理解自动装箱就可以简单的理解为将基本数据类型封装为对象类型,来符合java的面向对象;例如用int来举例://声明一个Integer对象Integer num = 1...
  • //自动拆箱想看一下源码是怎么完成自动装箱和拆箱。 发现第一行代码自动装箱走方法是 valueOf , 看图这一段逻辑判断是, 如果传过来值在Integer对象缓存范围内, 就直接返回缓存好了值, 否则另外新建一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,875
精华内容 1,150
关键字:

java的自动装箱和自动拆箱

java 订阅