- Java语言程序设计
- 陆迟编著
- 748字
- 2020-08-27 13:55:03
2.7 包装类
Java不是纯面向对象的程序设计语言,这是因为它有byte、short、int、long、float、double、char和boolean这些基本类型。Java保留它们是出于效率方面的原因。但有时候,确实需要将这些基本类型作为类来处理。例如在调用方法时,若采用int数据作为参数,在被调方法中就不能改变调用方法中对应参数的值,因为它是按值传送的。但是,若将一个含有int数据的对象作为参数,那么,调用方法中对应参数中int值就可以被改变。
Java语言中专门提供了所谓的包装类(wrapper class)。这些类将以上基本类型包装成类。基本类型与它们对应的包装类见表2.17。
表2.17 基本类型与包装类
使用包装类的方法与其他类一样,定义对象的引用、用new运算符创建对象,用方法来对对象进行操作等。
例如:Ⅰnteger i = new Ⅰnteger(10); // i是 Ⅰnteger类的一个对象,值为10
Ⅰnteger j = new Ⅰnteger(20); // j是 Ⅰnteger类的一个对象,值为20
【例2.7】输出int类型的最大值与最小值和double类型绝对值的最大值与最小值。
class WrapperDemo{ public static void main(String args[]){ System.out.println(Integer.MAX_VALUE); // int类型的最大值 System.out.println(Integer.MIN_VALUE); // int类型的最小值 System.out.println(Double.MAX_VALUE); // double类型绝对值的最大值 System.out.println(Double.MIN_VALUE); // double类型绝对值的最小值 } }
程序运行结果如下:
2147483647 -2147483648 1.7976931348623157E308 4.9E-324
包装类中各类的方法虽然不完全相同,但有一些是类似的。下面的例子以 Ⅰnteger类为例,其他类请读者理解这些类中方法名称的构成规律,举一反三。
【例2.8】包装类Ⅰnteger类常用方法的使用以及与int数据进行混合运算的例子。
class UseWrapper { public static void main(String args[]) { int num = 2005; System.out.println(num + " 的二进制是: " + Integer.toBinaryString(num)); // 转换十进制数为二进制数 System.out.println(num + " 的八进制是: " + Integer.toOctalString(num)); // 转换十进制数为八进制数 System.out.println(num + " 的十六进制是: " + Integer.toHexString(num)); // 转换十进制数为十六进制数 Integer iobj = Integer.valueOf("123"); Integer iobj1 = new Integer(234); Integer iobj2 = new Integer("234"); int i = iobj.intValue(); System.out.println("iobj = " + iobj); System.out.println("i = " + i); System.out.println("iobj1==iobj2 ? " + iobj1.equals(iobj2)); // 比较两个对象是否相等 iobj = iobj + num; // int数据和Integer数据可以混合运算 System.out.println("iobj = " + iobj); num = iobj + num; System.out.println("num = " + num); } }
程序运行结果如下:
2005 的二进制是: 11111010101 2005 的八进制是: 3725 2005 的十六进制是: 7d5 iobj = 123 i = 123 iobj1==iobj2 ? true iobj = 2128 num = 4133