11、自动拆箱和装箱

什么是自动拆箱和自动装箱?

        //自动装箱:把基本类型转换为包装类类型
        Integer s1 = 123;

        //自动拆箱:把包装类类型转换为基本类型
        Integer s2 = new Integer(10);
        int i2 = s2;

以上特性是jdk5中加入的,也就是说在jdk5版本之前是不支持自动装箱和自动拆箱的。

注意:在判断两个Integer类型是否相等时,要使用equals方法,不能使用"==",Integer已经重写了Object中的equals方法。

     Integer s2 = 888;
        Integer s3 = 888;
        System.out.println(s2 == s3); //false Integer s2 = 888; 相当于 Integer s2 = new Ingeter(888);s2和s3地址不一样
        System.out.println(s2.equals(s3)); //true 。equals比较的是值, == 比较的是地址
        

整型常量池

如果数据是在(-128~127)之间,java中在方法区中引入了一个“整型常量池”。
下面程序打印的结果

        Integer s4 = 127;
        Integer s5 = 127;
        System.out.println(s4 == s5); //true
        System.out.println(s4.equals(s5)); //true

上面程序不会在堆中创建对象,会直接从整型常量池中拿。
比较Integer的值是否相等时,一定要使用equals方法

原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/10123319.html

时间: 2024-10-20 09:50:09

11、自动拆箱和装箱的相关文章

Java的自动拆箱和装箱

Java 1.5中引入了自动装箱和拆箱机制 自动装箱:(看代码) <span style="font-family:SimSun;font-size:18px;color:#000000;">//自动装箱:把基本类型用它们所对应的引用类型包装起来,使它们具有对象的属性 Integer integer_a = 8; </span> 自动拆箱:(看代码) <span style="font-family:SimSun;font-size:18px;c

自动拆箱,装箱?

自动装箱和自动拆箱是简化了基本数据类型和相对应对象的转化步骤(由java编译器处理) 例:Integer  a=1;//这就是一个自动装箱,如果没有自动装箱的话,需要这样Integer  a=new Integer(1)   int b=a;//这就是一个自动拆箱,如果没有自动拆箱的话,需要这样:int b=a.intValue()

java 1.5 自动拆箱和装箱的注意事项

背景 java1.5后引入了自动装箱和自动拆箱的概念 自动拆箱:将引用类型转化为基本数据类型 自动装箱:将基本数据类型装为引用类型 但是实际使用中,什么情况自动拆箱什么情况自动装箱呢? 自动装箱 Integer i = 100; (调用Integer.valueOf(100)) 这里存在一个缓存变量 -128~127 ,如果基本数据类型在此范围内,则使用缓存的对象,否则new Integer(number) 自动拆箱 //第一种情况 Integer i = 100; int x = i; (调用

java 自动拆箱与装箱(基本数据类型与引用类型)

(本文章不为原创文章,摘抄,忘记了出处,抱歉) 1.Java数据类型 在介绍java的自动装箱和拆箱之前,我们先来了解一下Java的基本数据类型. 在Java中,数据类型可以分为两大种,Primitive Type(基本类型)和Reference Type(引用类型).基本类型的数值不是对象,不能调用对象的toString(). hashCode().getClass().equals()等方法.所以Java提供了针对每种基本类型的包装类型.如下: INDEX 基本类型 大小 数值范围 默认值

java学习笔记——自动拆箱装箱(Autoboxing&amp;Unboxing)

一.基本类型打包器 1.基本类型:long.int.double.float.boolean 2.类类型:Long.Integer.Double.Float.Boolean 区别:基本类型效率更高,类类型的对象却可以携带更多的信息. public class TestInteger01 { public static void main(String[] args) { int a = 10; int b = 20; Integer A = new Integer(a); Integer B =

Java知多少(24)包装类、拆箱和装箱详解

虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯,并的确能简单.有效地进行常规数据处理. 这种借助于非面向对象技术的做法有时也会带来不便,比如引用类型数据均继承了 Object 类的特性,要转换为 String 类型(经常有这种需要)时只要简单调用 Object 类中定义的toString()即可,而基本数据类型转换为 String 类型则要麻烦得

自动装箱/自动拆箱/注释之反编译示例

下面是源码: 1 package test; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public class Test { 7 public static void main(String[] args) { 8 List<Integer> list = new ArrayList<>(); 9 //下面会触发编译器自动装箱 10 list.add(1); 11 //下面会触发编译器自动拆箱 12

自动装箱(boxing)和自动拆箱(unboxing)

摘自:http://www.codeceo.com/article/java-boxing-unboxing.html Java的四类八种基本数据类型 基本类型 占用空间(Byte) 表示范围 包装器类型 boolean 1/8 true|false Boolean char 2 -128~127 Character byte 1 -128~127 Byte short 2 -2ˆ15~2ˆ15-1 Short int 4 -2ˆ31~2ˆ31-1 Integer long 8 -2ˆ63~2ˆ

自动装箱和自动拆箱

http://www.cnblogs.com/xrq730/p/4869065.html 自动拆箱和自动装箱 Java为每种基本数据类型都提供了对应的包装器类型.举个例子: public class TestMain { public static void main(String[] args) { Integer i = 10; } } 这个过程中会自动根据数值创建对应的Integer对象,这就是自动装箱.再看另外一段代码: public class TestMain { public st