概述
包装类实现原理分析、装箱与拆箱
包装类
- 如果想要将基本数据类型以类的形式进行处理,那么就需要对其进行包装。
- 包装处理过后可以像对象一样进行引用传递、包装过后就可以用Object进行接收
- Java 已经提供了包装类:
- 对象型包装类(Object直接子类)Boolean、Character
- 数值型包装类:(Number直接子类,Number是一个抽象类) Byte、Short、Integer、Long、Float、Double
Number 类有 6 个方法:
NO. | 方法名称 | 描述 |
---|---|---|
1 | public abstract int intValue() | 从包装类中获取int数据 |
2 | public abstract long longValue() | 从包装类中获取long数据 |
3 | public abstract float floatValue() | 从包装类中获取float数据 |
4 | public abstract double doubleValue() | 从包装类中获取double数据 |
5 | public byte byteValue() | 从包装类中获取byte数据 |
6 | public short shortValue() | 从包装类中获取short数据 |
装箱:将基本数据类型保存在包装类之中
拆箱:从包装类对象中获取基本数据类型
以 int 数据类型为例进行包装处理:
class Int{
private final int data;
public Int(int data){
this.data = data;
}
public int intValue(){
return this.data;
}
}
public class JavaDemo {
public static void main(String[] args) {
Object obj = new Int(10);
// 装箱
int x = ((Int)obj).intValue() ;
//拆箱
System.out.println(x);
}
}
// 运行结果
10
Process finished with exit code 0
传统装箱、拆箱操作
public class JavaDemo {
public static void main(String[] args) {
Integer obj = new Integer(10);
// 传统装箱操作
System.out.println(obj.intValue());// 传统拆箱操作
}
}
自动装箱 自动拆箱
在JDK 1.9之后,包装类的构造方法已经不建议使用,目前提供了更为方便的自动装箱和自动拆箱操作
public class JavaDemo {
public static void main(String[] args) {
Integer obj = 10;
// 自动装箱
System.out.println(obj);
// 自动拆箱
}
}
包装类可以直接参与运算
public class JavaDemo {
public static void main(String[] args) {
Integer obj = 10;
System.out.println(obj);
obj++;
System.out.println(obj * 10);
}
}
10
110
Process finished with exit code 0
自动装箱最大的好处是可以实现 Object接收基本数据类型的操作
Object 接收 Double 类实例
public class JavaDemo {
public static void main(String[] args) {
Object obj =77.77; // double 自动装箱为 Double 类,向上转型为 Object
double num = (Double) obj;
// 向下转型,自动拆箱
System.out.println(num * 6);
}
}
在使用包装类进行相等判断的时候最好使用 equals()方法完成,因为如果占位超过一位,用 == 就不能判断了。
public class JavaDemo {
public static void main(String[] args) {
Integer x = 127;
Integer y = 127;
System.out.println(x == y);
}
}
// 运行结果
true
Process finished with exit code 0
public class JavaDemo {
public static void main(String[] args) {
Integer x = 128;
Integer y = 128;
System.out.println(x == y);
}
}
// 运行结果
false
Process finished with exit code 0
public class JavaDemo {
public static void main(String[] args) {
Integer x = 128;
Integer y = 128;
System.out.println(x.equals(y));
}
}
// 运行结果
true
Process finished with exit code 0
最后
以上就是舒心秀发为你收集整理的包装类实现原理分析、装箱与拆箱包装类实现原理分析、装箱与拆箱的全部内容,希望文章能够帮你解决包装类实现原理分析、装箱与拆箱包装类实现原理分析、装箱与拆箱所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复