包装类
包装类的主要功能主要是针对基本数据类型的对象转换而实现的。在JDK1.0时就提供了八种包装类对应八种基本数据类型
可以发现在Java中包装类提供有两种类型:
- 对象型包装类(Object直接子类):Boolean、Character
- 数值型包装类(Number直接子类):Byte、Short、Integer、Long、Float、Double
Number是一个抽象类,以后只要是看见了Number都应该明确的表示它是一个数字的概念,这个类定义有如下方法:
方法名称 | 类型 | 说明 |
---|---|---|
public byte byteValue() | 普通 | 从包装类中获取byte数据 |
public short shortValue() | 普通 | 从包装类中获取short数据 |
public abstract int intValue() | 普通 | 从包装类中获取int数据 |
public abstract long longValue() | 普通 | 从包装类中获取long数据 |
public abstract float floatValue() | 普通 | 从包装类中获取float数据 |
public abstract double doubleValue() | 普通 | 从包装类中获取double数据 |
装箱与拆箱
- 数据装箱:将基本数据类型保存到包装类中,一般可以用构造方法完成
- Integer类: public Integer( int value);
- Double类: public Double( double value);
- Boolean类: public Boolean( boolean value);
- 数据拆箱:从包装类中获取基本数据类型
- 数值型包装类已经有Number类定义了拆箱方法(上面的表格)
- Boolean型:public boolean booleanValue();
public class JavaDemo {
//int和Integer为例
public static void main(String args[]) {
Integer obj = new Integer(10); // 装箱. .
int num = obj.intValue() ;//拆箱。
System.out.println(num*num);
}
}
而JDK1.5之后提供了自动的拆箱与装箱操作
public class JavaDemo{
public static void main (String args []) {
Integer obj = 10 ; //自动装箱,此时不再关心构造方法了
int num=obj;//自动拆箱
obj ++ ; //包装类对象可以直接参与数学运算
System.out.println(num *obj) ; // 直接参 与数学运算
}
}
注意一点:在进行包装类相等判断的时候使用equals()完成,而包装类本身也需要考虑占位的长度,如果不超过一位的内容,可以使用“==”判断。
Integer x = 128 ;
Integer y = 128;
System.out.println(x == y)//输出打印false
System.out.println(x.equals(y));//输出打印true
接口
抽象类与普通类相比最大的优势在于:可以实现对子类覆写方法的控制,但是在抽象类里面可能依然会保留有一些普通方法,而普通方法里面可能会涉及到一些安全或者隐私的操作问题,那么这样在进行开发的过程之中,如果想要对外部,隐藏全部的实现细节 ,则就可以通过接口来进行描述。
接口可以理解为一个纯粹的抽象类