亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

JDK5.0新增特性(一) 自動裝箱與拆箱

標簽:
Java

一、What-什么是自动装箱和拆箱

    自动装箱(autoboxing)指编译器自动将基本数据类型转换为包装类,而拆箱(unboxing)则是将程序中的包装类转换为基本数据类型。

理解这句话必须先理解其中的三个名词:编译器、基本数据类型和包装类。
编译器就是将一种语言(通常为高级语言,这里指Java编程语言)翻译为另一种语言(通常为低级语言,这里指编译后的命令语言)的程序。
基本数据类型在Java语言中包括byte、short、int、long、float、double、boolean、char共8项。
包装类对应基本数据类型分别为Byte、Short、Integer、Long、Float、Double、Boolean、Character。
官网文档:http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html

二、How-怎样进行自动装箱和拆箱

在JDK5.0之前,要生成一个数值为2的Integer对象,需要这样写:

Integer i = new Integer(2);//装箱
Integer j = Integer.valueOf(2);//装箱
int a = i.intValue();//拆箱

而从JDK5.0开始,只需这样写:

Integer i = 2;//自动装箱
int a = i;//自动拆箱

查看编译后的字节码(使用javap命令)可以发现,自动装箱替换为Integer.valueOf方法,而自动拆箱替换为intValue方法。

三、Why-为什么要进行自动装箱和拆箱

下面这段话是官网文档中的片段:

As any Java programmer knows, you can’t put an int (or other
primitive value) into a collection. Collections can only hold object
references, so you have to boxprimitive values into the appropriate
wrapper class (which is Integer in the case of int). When you take the
object out of the collection, you get the Integer that you put in; if
you need an int, you must unbox the Integer using the intValue method.
All of this boxing and unboxing is a pain, and clutters up your code.
The autoboxing and unboxing feature automates the process, eliminating
the pain and the clutter.

简单翻译下:在Java语言中,程序员不能够向集合中添加基本数据类型的值(比如int类型)。集合中只能保存对象的引用,所以程序员必须把该值包装到其对应的包装类中(对应int类型的包装类是Integer)。当从集合中取出对象时,得到的是Integer类型的对象,如果需要int类型的值,程序员必须使用intValue这个方法对该对象作拆箱处理。所有的装箱和拆箱给程序员带来痛苦,使程序变得混乱。自动装箱和拆箱的特性使其过程自动化,排除了对程序员和代码的干扰。
总之,自动装箱和拆箱简化了包装类的使用,减少了程序员的编码量,但是对运行时并没有任何的改变。

點擊查看更多內容
5人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
2
獲贊與收藏
28

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消