一、包装类
出于对性能的考虑,在Java中基本数据类型不作为对象使用,因为处理对象需要额外的系统开销。但是Java中的许多方法需要将对象作为参数,所以有时需要将基本数据类型并入对象或包装成对象。通过包装类,可以将基本数据类型值作为对象处理。
Java为基本数据类型提供了Boolean、Character、Byte、Short、Integer、Long、Float、Double等包装类,这些都在java.lang包里。下面写一下Integer类和Double类中的数据域和方法:
java.lang.Integer | java.lang.Double |
---|---|
-value: int | -value: Double |
+MAX_VALUE: int | +MAX_VALUE: double |
+MIN_VALUE: int | +MIN_VALUE: double (返回最小正值,float类似) |
+Integer(value: int) | +Double(value: double) |
+Integet(value: String) | +Double(value: String) |
+byteValue(): byte | +byteValue(): byte |
+shortValue(): short | +shortValue(): short |
+intValue(): int | +intValue(): int |
+longValue(): long | +longValue(): long |
+floatValue(): float | +floatValue(): float |
+doubleValue(): double | +doubleValue(): double |
+compareTo(o: Integer): int | +compareTo(o: double):int |
+toString():String | +toString(): String |
+valueOf(s: String): Integer | +valueOf(s: String): Double |
+valueOf(s: String,radix: int): Integer | +valueOf(s: String,radix: int): Double |
+parseInt(s: String): int | +parseInt(s: String): double |
+parseInt(s: String,radix: int): int | +parseInt(s: String,radix: int): double |
可以发现包装类之间非常相似。
包装类没有无参构造方法。既可以用基本数据类型也可以用表示数值的字符串构造包装类。所有包装类的实例都是不可变的,这就意味着一旦创建对象后,它们内部值都是不能再改变的。
二、基本类型和包装类之间的自动转换
Java允许基本类型和包装类类型之间的自动转换。如果一个基本类型值出现在需要对象的环境中,编译器会自动将其进行自动装箱;同样也可以实现自动开箱。
Integer intObject = new Integer(100);
等价于: Integer intObject = 100;
同样也可以直接输出 System.out.println(intObject);