Object类最大的特点是所有类的父类,并且可以接收所有的数据类型。但是基本数据类型并不是类(int等),所以想要将基本数据类型以类的形式进行处理需要对其进行包装。
以int为例实现一个包装处理:

  1. class Int{
  2. private int data;//包装一个基本数据类型
  3. public Int(int data){
  4. this.data = data;
  5. }
  6. public int intValue(){
  7. return this.data;
  8. }
  9. }
  10. public class JavaDemo{
  11. public static void main(String args[]){
  12. Object obj = new Int(10);//装箱
  13. int x = (Int)obj.intValue();//拆箱
  14. System.out.println();
  15. }
  16. }

基本数据类型进行包装处理后可以像对象一样进行引用传递,同时也可以使用Object类进行接收。
包装类分为两种:
1.对象型包装类(Object直接子类):Boolean、Character
2.数值型包装类(Number类(抽象类)):Byte、Short、Integer、Long、Float、Double

Number是一个抽象类,常用方法:
1.public byte byteValue()->从包装类中获取byte数据
2.public byte shortValue()->从包装类中获取short数据
3.public byte intValue()->从包装类中获取int数据
4.public byte longValue()->从包装类中获取long数据
5.public byte floatValue()->从包装类中获取float数据
6.public byte doubleValue()->从包装类中获取double数据

装箱与拆箱操作

1.数据装箱:

将基本数据类型保存到包装类之中,一般可以利用构造方法来完成。
Double b = new Double(1.0);

2.数据拆箱:

数值型包装类已经由Number类定义好拆箱的方法了。

JDK1.9之后,对于包装类提供的构造方法就变成了过期处理,不建议用户再继续使用。
JDK1.5之后提供了自动的装箱和拆箱。所以手工模式基本没人用了。

  1. class Untitled {
  2. public static void main(String[] args) {
  3. Integer obj = 5;//自动装箱
  4. int num = obj;//自动拆箱
  5. obj++;//包装类对象可以直接参与数学运算。
  6. System.out.println(num * obj);//30
  7. }
  8. }

包装类需要注意:
-128 ~ 127是byte范围,==有效。
-129或者更小,128或者更大不能再用 == 来进行比较大小,
所以包装类要进可能用equals比较

  1. class Untitled {
  2. public static void main(String[] args) {
  3. Integer a = 128;
  4. Integer b = 128;
  5. Integer c = 127;
  6. Integer d = 127;
  7. System.out.println(a==b);//false
  8. System.out.println(c==d);//true
  9. System.out.println(a.equals(b));//true
  10. }
  11. }