java Integer类以及拆箱和装箱

package com.ilaw.boson.controller;

public class Demo {
    public static void main(String[] args) {
        Integer a = new Integer(2000);
        int b =2000;
        Integer c =b;

        System.out.println(a == b);//true,Integer和int进行操作的时候,对a进行拆箱处理
        System.out.println(b == c);//true,Integer和int进行操作的时候,对c进行拆箱处理
        System.out.println(a == c);//false,b进行赋值时,装箱时会调用Integer.valueOf方法对a进行装箱

        a = new Integer(10);
        c =10;
        System.out.println(a == c);//false,进行行装箱操作时,会调用Integer.valueOf方法,本质两个对象对比

        a=10;
        System.out.println(a == c);//true,两个对象都是通过装箱操来构造的,即通过Integer.valueOf方法,则如果值在-128-127之间,会从IntegerCache中取

        /**
         * 总结:
         * 1.Integer和int进行操作的时候,对Integer对象进行拆箱处理
         * 2.通过new的方式创建Integer对象的地址时不同的
         * 3.通过Integer a=10;的方式赋值的时候会进行装箱,装箱会调用Integer的valueOf方法
         * 4.Integer内部会通过IntegerCache对象来存储常用的-128-127之间Integer对象,在装箱时会返回IntegerChache的对象
         *
         */

        //说明,Integer类型和int类型进行操作(相等,相加)的时候会进行拆箱操作

    }
}

总结:
 1.Integer和int进行操作的时候,对Integer对象进行拆箱处理
 2.通过new的方式创建Integer对象的地址时不同的
 3.通过Integer a=10;的方式赋值的时候会进行装箱,装箱会调用Integer的valueOf方法
 4.Integer内部会通过IntegerCache对象来存储常用的-128-127之间Integer对象,在装箱时会返回IntegerChache的对象

时间: 2025-01-14 13:31:46

java Integer类以及拆箱和装箱的相关文章

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

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

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

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

java学习笔记——自动拆箱装箱(Autoboxing&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中的拆箱和装箱

首先说一下Java中的包装类,Java语言是一个面向对象的语言,但是Java中的基本数据类型却不是面向对象的,这在实际使用时存在很多的不便(比如,我们不能直接想集合Collections中放入原始类型值,因为集合只接收对象).为了解决这个不足,在设计类的是为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class). 基本数据类型 包装类 byte Byte boolean Boolean short Short char Charact

拆箱与装箱

拆箱与装箱是一个早就接触的知识点,但是自己并没有系统的总结过,今天我们就来看一下: 一.首先介绍几个知识点: 值类型: 1. 值类型是在栈中分配内存,在声明时初始化才能使用,不能为null. 2. 值类型超出作用范围系统自动释放内存. 3. 主要由两类组成:结构,枚举(enum),结构分为以下几类: 1. 整型(Sbyte.Byte.Char.Short.Ushort.Int.Uint.Long.Ulong) 2. 浮点型(Float.Double) 3. decimal 4. bool 5. 

C#之拆箱,装箱

C#的数据类型分为三类,值类型,引用类型和指针类型.指针类型只能用于不安全模式,而值类型和引用类型通过拆箱和装箱机制可以相互转换,通过中间的object类型,所以C#的所有种类直接或间接地从object类种类派生而来. 值类型 值类型数据存储在栈中,栈用于存放固定长度的数据,分为简单类型,结构类型和枚举类型. 结构类型:把不同类型的数据组合在一起,便于使用.跟类相似,包含数据成员和函数成员的数据结构,类类型是一种引用类型.结构类型用关键字Struct定义,可以嵌套定义. 枚举类型:成员只能是整数

Integer自动装拆箱

public static void main(String[] args) { Integer a1 = 1; Integer a2 = 1; Integer b1 = 127; Integer b2 = 127; Integer c1 = 128; Integer c2 = 128; Integer d1 = 321; Integer d2 = 321; System.out.println(a1 == a2); System.out.println(b1 == b2); System.ou

拆箱,装箱,枚举,结构

枚举: 1.不能定义自己的方法 2.它们不能实现接口 3.不能定义属性和索引器 4.枚举成员之间用“,”隔开 5.枚举成员如果没有赋值,那么它的第一个值默认为0 6.后面的成员取值是前一个成员取值+17.枚举成员只能赋值为整型 类与结构:1.类和结构都是创建对象的模版2.结构是值类型,类是引用类型,结构不能有析构函数3.类可以有析构函数结构不能声明默认构造函数(没有参数的构造函数)4.结构可以声明构造函数,但他们必须带参数,并且需要把所有字段都要赋值 5.在结构中初始化实例字段是错误的,在类中是

拆箱和装箱

1.拆箱和装箱,我们都知道的是 装箱:就是将值类型转换为引用类型拆箱:将引用类型转换为值类型 2.那么看下面一个例子: string str=“123”int n=Convert.ToInt32(str): string是引用类型,int为值类型.那么,此处有没有发生拆装箱呢 答案是:没有 原因:看两种类型是否发生了装箱或拆箱,要看这两种类型是否存在继承关系.有继承关系才有可能发生装箱和拆箱 3.现在,我们只知道拆装箱的定义,那么拆装箱到底给我们的应用程序带来了好处还是坏处呢? 我们可以看下面一