【摘要】:由于Java语言中的基本数据类型不是面向对象的,并不具备对象的性质,实际使用时存在很多不便。Java在java.lang包中提供了八种基本数据类型对应的包装类,可以很方便地将它们转换为对象进行处理,并且可以调用一些方法。Java中基本数据类型和包装类的对应关系如表10.1.1所示。表10.1.1Java基本数据类型和包装类的对应关系其中Byte、Short、Integer、Long、Float、Double都是抽象类Number的子类,同时Number的子类必须提供将数值转换为基本类型byte、short、int、long、float、double的方法。
由于Java语言中的基本数据类型(第3章已介绍)不是面向对象的,并不具备对象的性质,实际使用时存在很多不便。Java在java.lang包中提供了八种基本数据类型对应的包装类,可以很方便地将它们转换为对象进行处理,并且可以调用一些方法。Java中基本数据类型和包装类的对应关系如表10.1.1所示。
表10.1.1 Java基本数据类型和包装类的对应关系
其中Byte、Short、Integer、Long、Float、Double都是抽象类Number的子类,同时Number的子类必须提供将数值转换为基本类型byte、short、int、long、float、double的方法(由于Java语言中基本类型之间的转换存在一定规则,不同基础数值类型的转换可能会丢失精度,甚至可能正负不同)。
从JDK 1.5版本开始,引入了自动装箱和自动拆箱的概念。装箱是指将基本类型的值转换成包装类对象,拆箱是指将包装类对象转换成基本类型的值。自动装箱和拆箱在Java中很常见,在赋值或方法调用时都有可能发生。
动手写10.1.1
(www.xing528.com)
提示
自动装箱和拆箱虽然可以使代码变得简洁,但也存在一些问题。比如,一个对象没有初始化或者为Null时,自动拆箱过程中会抛出NullPointerException异常;再比如,由于Java会对-128到127的整数进行缓存,直接自动装箱同一个int基本类型值的两个不同的对象,在用“==”比较时会返回true,但是很明显这两个对象并不符合预期;有时自动装箱会隐蔽地创建对象,额外增加了程序的负担,所以在有自动装箱和拆箱的地方要谨慎操作。
动手写10.1.2
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。