我是靠谱客的博主 舒心秀发,最近开发中收集的这篇文章主要介绍包装类实现原理分析、装箱与拆箱包装类实现原理分析、装箱与拆箱,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

包装类实现原理分析、装箱与拆箱

包装类

  • 如果想要将基本数据类型以类的形式进行处理,那么就需要对其进行包装。
  • 包装处理过后可以像对象一样进行引用传递、包装过后就可以用Object进行接收
  • Java 已经提供了包装类:
    • 对象型包装类(Object直接子类)Boolean、Character
    • 数值型包装类:(Number直接子类,Number是一个抽象类) Byte、Short、Integer、Long、Float、Double

Number 类有 6 个方法:

NO.方法名称描述
1public abstract int intValue()从包装类中获取int数据
2public abstract long longValue()从包装类中获取long数据
3public abstract float floatValue()从包装类中获取float数据
4public abstract double doubleValue()从包装类中获取double数据
5public byte byteValue()从包装类中获取byte数据
6public 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

最后

以上就是舒心秀发为你收集整理的包装类实现原理分析、装箱与拆箱包装类实现原理分析、装箱与拆箱的全部内容,希望文章能够帮你解决包装类实现原理分析、装箱与拆箱包装类实现原理分析、装箱与拆箱所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部