欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

int和Integer之理解自动拆箱与装箱

程序员文章站 2022-05-06 08:47:49
...

自动装箱是一种语法糖,发生在编译阶段,也就是生成的字节码是一致的。

public class Test22 {

    public static void main(String[] args) {

        Integer integer=1;
        int a=integer++;
    }
}

反编译之后

Compiled from "Test22.java"
public class Test22 {
  public Test22();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public static void main(java.lang.String[]);
    Code:
       0: iconst_1
       1: invokestatic  #2                  // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
       4: astore_1
       5: aload_1
       6: astore_3
       7: aload_1
       8: invokevirtual #3                  // Method java/lang/Integer.intValue:()I
      11: iconst_1
      12: iadd
      13: invokestatic  #2                  // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      16: dup
      17: astore_1
      18: astore        4
      20: aload_3
      21: invokevirtual #3                  // Method java/lang/Integer.intValue:()I
      24: istore_2
      25: return
}

  • 装箱:基本类型=》对应的引用类型
  • 拆箱:对应的引用类型=》基本类型
相关标签: 每天一道面试题