面向对象增强的包装类(Manchester United)有木有
(一)Java7增强的包装类
Java为8个基本类型提供了对应的包装类,通过这些包装类可以把8个基本类型的值包装成对象使用,JDK1.5提供了自动装箱和自动拆箱功能,允许把基本类型值直接赋值给对应的包装类引用变量,也允许把包装类对象直接赋值给对应的基本类型变量。
Java是面向对象的编程语言,但它包含了8种基本数据类型,这8种基本数据类型不支持面向对象的编程机制,基本数据类型的数据也不具备”对象”的特性:没有Field、方法可以被调用。Java之所以提供这8种基本数据类型,主要是为了照顾程序员传统的习惯。
这8种基本数据类型带来了一定的方便性,列如可以进行简单、有效的常规数据处理。但在某些时候,基本数据类型会有一些制约,列如所有引用类型的变量都继承了Object类,都可当成Object类型变量使用。但基本数据类型的变量就不可以。为了解决8种基本数据类型的变量不能当成Object类型变量使用问题,Java提供了包装类(Wrapper Class)的概念,为8种基本数据类型分别定义了相应的引用类型,并称之为基本数据类型的包装类。
如下图:

下面举例:如何把基本类型变量转换成对应包装类对象,以及如何把一个字符串包装成包装类对象。
public class Primitive2Wrapper { public static void main(String[] args) { boolean bl = true; Boolean blobj = new Boolean(bl); int it = 5; Integer itObj = new Integer(it); Float fl = new Float("4.56"); System.out.println("blobj = " + blobj); System.out.println("itObj = " + itObj); System.out.println("fl = " + fl); } }
运行结果:
blobj = true itObj = 5 fl = 4.56
(二)自动装箱和自动拆箱
JDK1.5 提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能。所谓自动装箱,就是可以把一个基本类型变量直接赋给对应的包装类变量,或者赋给Object变量;自动拆箱则与之相反,允许直接把包装类对象直接赋给一个对应的基本类型变量。
下面举例:自动装箱和自动拆箱
public class AutoBoxingUnboxing { public static void main(String[] args) { //直接把一个基本类型变量赋给Integer对象 Integer inObj = 5; //直接把一个boolean类型变量赋给一个Object类型变量 Object boolObj = true; //直接把一个Integer对象赋给int类型变量 int it = inObj; if(boolObj instanceof Boolean) { //先把Object对象强制类型转换为Boolean类型,再赋给boolean变量 boolean b = (Boolean)boolObj; System.out.println(b); } } }
当JDK提供了自动装箱和自动拆箱的功能后,大大简化了基本类型变量和包装类对象之间的转换过程。值得指出的是,进行自动装箱和自动拆箱时必须注意类型匹配,列如Integer只能自动拆箱成int类型变量,不要试图拆箱成其他类。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5500.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
