精华内容
下载资源
问答
  • 主要介绍了Java拆箱与装箱,结合实例形式详细分析了Java拆箱与装箱相关的数据类型转换操作技巧,需要的朋友可以参考下
  • java拆箱和装箱

    2019-09-21 07:15:51
    java拆箱和装箱https://blog.csdn.net/u013309870/article/details/70229983 装箱就是自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型。 ...

    java拆箱和装箱https://blog.csdn.net/u013309870/article/details/70229983

    装箱就是自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型。

    展开全文
  • Java拆箱装箱

    2019-08-20 21:57:46
    自动拆箱与装箱 将一个基本数据类型的值赋给其所对应的包装类型称为装箱; 将一个基本数据类型包装类类型的值赋给其所对应的基本数据类型称为拆箱。 由于装箱和拆箱的过程是自动进行的非人为转换,所以称作为自动...

    一.自动拆箱与装箱

    将一个基本数据类型的值赋给其所对应的包装类型称为装箱;

    将一个基本数据类型包装类类型的值赋给其所对应的基本数据类型称为拆箱。

    由于装箱和拆箱的过程是自动进行的非人为转换,所以称作为自动装箱和拆箱。

    自动拆箱和装箱是从JDK5.0才开始有的,它方便了基本数据类型和其对应的包装类型之间的转换。

    例如下面的代码:

    public class Test {
    
    	public static void main(String[] args) {
    		Integer i=100;//包装类型
    		System.out.println(i);
    		int j=i;//基本数据类型
    		System.out.println(j);
    	}
    }

    它们的运行结果都是100,这便是由于包装类型和基本数据类型之间的自动拆箱和装箱

     

    自动拆箱和装箱的过程由编译器自动完成的,将基本数据类型包装成引用类型,通过包装类的valueOf方法将基本数据类型包装成引用类型;通过包装类对象xxxValue方法将引用类型变为对应的基本类型,所以上页代码经过编译器编译后为:

    public class Test {
    
    	public static void main(String[] args) {
    		Integer i=Integer.valueOf(100);
    		System.out.println(i);
    		int j=i.intValue();
    		System.out.println(j);
    	}
    }

    二.包装类数据缓存

    Java对部分经常使用的数据采用缓存技术,即第一次使用该数据则创建该数据对象并对其进行缓存,当再次使用等值对象时直接从缓存中获取,从而提高了程序执行性能。但是一旦超出了缓存的范围则两次使用的值便不在一个地址上。

    回忆一下等号的用法:

    如果比较的两个值是基本数据类型,则比较的是二者的值是否相等;如果比较的是两个引用类型,则比较的是二者的地址是否相等。因为包装类都是引用类型,所以我们可以利用等号来测试缓存的范围。

    1.整型

    byte、short、int和long所对应包装类的数据缓存范围为 -128~127(包括-128和127)

    此时如果a和b都是127,则都处于缓存的范围,属于同一个地址,而aa和bb都是128,超出了缓存的范围,所以地址不一样,打印结果如下:

    public class Test {
    
    	public static void main(String[] args) {
    		Integer a=127;
    		Integer b=127;
    		Integer aa=128;
    		Integer bb=128;
    		System.out.println(a==b);
    		System.out.println(aa==bb);
    	}
    }

    2.浮点型

    float和double所对应的包装类没有数据缓存范围,所以无论赋什么值二者的地址都是不相同的。

    public class Test {
    
    	public static void main(String[] args) {
    		Float a=1.0f;
    		Float b=1.0f;
    		Double aa=1.0;
    		Double bb=1.0;
    		System.out.println(a==b);
    		System.out.println(aa==bb);
    	}
    }

    3.字符型

    char所对应包装类的数据缓存范围为 0~127(包括0和127)

    public class Test {
    
    	public static void main(String[] args) {
    		Character a=127;
    		Character b=127;
    		Character aa=128;
    		Character bb=128;
    		System.out.println(a==b);
    		System.out.println(aa==bb);
    	}
    }

    4.布尔型

    boolean所对应包装类的数据缓存为true和false

    public class Test {
    
    	public static void main(String[] args) {
    		boolean a=true;
    		boolean b=true;
    		System.out.println(a==b);
    	}
    }

    三.equals方法

    当两个包装类进行比较的时候,使用等号比较的是二者的地址,而equals方法比较的是值是否相等,像如下示例,a和b虽然都超出了整型的缓存空间,二者的地址不相同,但是值都为128,所以返回值为true。

    这里要注意一点就是,整型中只有Integer包装类才有这一特性,例如Short类型的变量c,与a虽然值相等,但是调用equals比较结果还是false。

    public class Test {
    
    	public static void main(String[] args) {
    		Integer a=128;
    		Integer b=128;
    		Short c=128;
    		System.out.println(a.equals(b));
    		System.out.println(a.equals(c));
    	}
    }

    展开全文
  • java拆箱装箱

    2018-03-13 20:36:00
    自动拆箱java的jdk将对象中的基本数据从对象中自动取出的操作。举例:自动装箱:Integer a = 1;实际jdk编译时编译为:Integer a = Integer.valueOf(1);自动拆箱:int b = a;实际jdk编译时编译为:int b = a.int...

    概念:

    自动装箱:java的jdk自动将基本数据类型封装到对象的操作。

    自动拆箱:java的jdk将对象中的基本数据从对象中自动取出的操作。

    举例:

    自动装箱:

    Integer a = 1;

    实际jdk编译时编译为:Integer a = Integer.valueOf(1);

    自动拆箱:

    int b = a;

    实际jdk编译时编译为:int b = a.intValue;

    (jdk实际编译内容可通过反编译工具查看)

    好处:

    简化了编程模式,方便了程序员。

    影响:

    我们在将String类型转换为int/long等基本类型的时候,应当使用parseXXX的API去进行转换。避免使用valueOf的API导致jdk自动装箱再拆箱。做不必要的工作。


    展开全文
  • java 拆箱与装箱原理

    2021-03-01 20:22:09
    自动装箱就是Java自动将基本类型值转换成对应的对象类型,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。因为这里的装箱和拆箱是自动进行的非人为转换...

    介绍:

    自动装箱就是Java自动将基本类型值转换成对应的对象类型,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。原始类型byte, short, char, int, long, float, double 和 boolean 对应的封装类为Byte, Short, Character, Integer, Long, Float, Double, Boolean。

    自动装箱和拆箱的原理

    自动装箱是java程序在编译的时候自动调用vulueOf()方法将基本类型转换为对象类型,而拆箱是编译器通过调用类似intValue(),doubleValue()这类的方法将对象转换成原始类型值。

    java 的8种基本类型的自动装箱代码实现源码:

    
        //boolean原生类型自动装箱成Boolean
        public static Boolean valueOf(boolean b) {
            return (b ? TRUE : FALSE);
        }
    
        //byte原生类型自动装箱成Byte
        public static Byte valueOf(byte b) {
            final int offset = 128;
            return ByteCache.cache[(int)b + offset];
        }
    
        //byte原生类型自动装箱成Byte
        public static Short valueOf(short s) {
            final int offset = 128;
            int sAsInt = s;
            if (sAsInt >= -128 && sAsInt <= 127) { // must cache
                return ShortCache.cache[sAsInt + offset];
            }
            return new Short(s);
        }
    
        //char原生类型自动装箱成Character
        public static Character valueOf(char c) {
            if (c <= 127) { // must cache
                return CharacterCache.cache[(int)c];
            }
            return new Character(c);
        }
    
        //int原生类型自动装箱成Integer
        public static Integer valueOf(int i) {
            if (i >= IntegerCache.low && i <= IntegerCache.high)
                return IntegerCache.cache[i + (-IntegerCache.low)];
            return new Integer(i);
        }
    
        //int原生类型自动装箱成Long
        public static Long valueOf(long l) {
            final int offset = 128;
            if (l >= -128 && l <= 127) { // will cache
                return LongCache.cache[(int)l + offset];
            }
            return new Long(l);
        }
    
        //double原生类型自动装箱成Double
        public static Double valueOf(double d) {
            return new Double(d);
        }
    
        //float原生类型自动装箱成Float
        public static Float valueOf(float f) {
            return new Float(f);
        }
    

    发现,只有double和float的自动装箱代码没有使用缓存,每次都是new 新的对象,其它的6种基本类型都使用了缓存策略。
    使用缓存策略是因为,缓存的这些对象都是经常使用到的(如字符、-128至127之间的数字),防止每次自动装箱都创建一此对象的实例。
    而double、float是浮点型的,没有特别经常使用到的数据,缓存效果没有其它几种类型使用效率高。

    int拆箱源码:

    Integer tt = 100; //装箱
     int ttint = tt;   //拆箱
    其实编译器暗地里帮我们做了:
    new Integer(ttint).intValue(); 
    
    展开全文
  • java 拆箱和装箱

    2018-11-01 15:04:43
    Java为什么要引入自动装箱和拆箱的功能?(为什么) 举个例子:主要是用于java集合中,List&lt;Inteter&gt; list=new ArrayList&lt;Integer&gt;(); list集合如果要放整数的话,只能放对象,不能放基本...
  • java拆箱与装箱?

    2018-12-27 09:53:46
    1,java的八种基本数据类型: 整形:byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean  2,拆箱与装箱 拆箱:把包装类型转成基本数据类型 装箱:把基本数据类型转换成包装类型 基本...
  • java拆箱,装箱

    2018-12-22 08:49:23
    拆箱,装箱 将一个char类型的参数传递给需要一个Character类型参数时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。 使用Character的构造方法创建一个Character类...
  • Java 拆箱与装箱

    2016-08-31 23:38:50
    Java中每个基本数据类型都有对应的一个类, 基本类型 对应的类 byte Byte short Short int Integer long Long float Float double Double char Character void Void boolean Boolean - 这些...
  • java 拆箱和装箱过程

    2019-10-28 15:32:30
    拆箱就是自动将包装器类型转换为基本数据类型。 装箱: public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + ...
  • Java拆箱与装箱

    2016-04-21 11:05:52
    第一篇博客 Integer d1=1234; Integer d2=1234;...上述代码是Java装箱的过程。...拆箱装箱过程中Integer类型的数字在[-128,127]之间的会作为基本数据...Java装箱和拆箱的过程其实是将程序员的工作交给编译器来运行。
  • // 返回了int类型的一个值value public int intValue() { return value; }
  • 一、什么是java自动拆箱/装箱 1.自动装箱就是自动将基本数据类型转换为对应的对象类型(JDK编译器在编译时调用valueof将基本数据类型转换为对象) 2.自动拆箱就是自动将对象类型转变为基本数据类型(JDK编译器在编译...
  • 需要注意的是:当 "=="运算符的两个操作数都是 包装...自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下...
  • //自动装箱 Integer a = 99; //自动拆箱 int b = a;
  • Integer null值转换int为0 public static void main(String[] args){ Integer i = null; int a = i == null?0:i; System.out.println(a); }  
  • Java1.5之后的版本中,引用类型Integer和基本数据类型int之间是能够经过自动装箱和拆箱进行计算的it例如: Integer in = 1; //it means Integer in = new Integer(1);ioin = in +1;// Integer type in convert to ...
  • 浅谈Java拆箱、装箱

    2015-05-30 23:58:00
    java语言规范中说道:在许多情况下装箱与解拆箱是由编译器自行完成的。 自动装箱:自动将基本数据类型封装为对象(包装器)类型, 自动拆箱:就是自动将对象(包装器)重新转化为基本数据类型: 例如用int来举例: ...
  • 根据数值创建对应的 对象就是装箱,将包装器类型转换为基本数据类型叫做拆箱。 举个例子 Integer a = 1;//装箱 int b=a;//拆箱 装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 ...
  • java装箱拆箱.ppt

    2011-11-09 22:58:58
    java装箱拆箱.ppt java装箱拆箱.ppt
  • java 装箱拆箱

    2021-01-16 17:18:02
    java装箱和拆箱 开发过程中常需要使用对象而不是内置数据类型,java为每个内置数据类型提供了包装类: Integer、Long、Byte、Double、Float、Short,都是Number的子类 装箱:将内置数据类型转换成对象 拆箱:将对象转...
  • Java 装箱拆箱

    2020-09-28 11:43:29
    Java中基本数据类型与它们的包装类进行运算时,编译器会自动帮我们进行转换,转换过程对程序员是透明的,这就是装箱和拆箱,装箱和拆箱可以让我们的代码更简洁易懂。 Java中基础数据类型与它们对应的包装类见下表...
  • java装箱拆箱

    2019-07-31 22:07:51
    所谓的拆箱装箱,其实就是一个简单的语法糖。我们以Integer为

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,391
精华内容 19,356
关键字:

java拆箱

java 订阅