经典面试题-自动拆装箱

本文引用自霍格沃兹测试开发学社录播课

Java经典面试题-自动拆装箱

霍格沃兹测试开发
http://ceshiren.com

面试相关问题

  • Java常用数据类型有哪些?
  • int和Integer有什么区别?
  • 为什么要有包装类?
  • 什么是自动拆装箱?

面试考察点分析

  • 基本数据类型是否了解
  • 包装类类型是否了解
  • 什么是自动拆、装箱
  • 基本数据类型和包装类比较

数据类型

  • 整数
    • 一般声明为 int 类型
    • 如果值很大,则声明为 long 类型
  • 小数
    • 常声明为 double类型
    • 如果声明为float 要在后面加f F

装箱和拆箱

  • 装箱
    • 将基本数据类型转换成包装类
  • 拆箱
    • 将包装类转换成基本数据类型

int 和 Integer 的区别

  • ==基本数据类型和包装类的区别==
    • 数据类型不同
    • 默认值不同
    • 内存中存储的方式不同
    • 实例化方式不同
    • 变量的比较方式不同

自动拆装箱

Integer num1= new Integer(127);
Integer num2= new Integer(127);
System.out.println(num1==num2);//输出 false
Integer num3=127;
Integer num4=127;
System.out.println(num3==num4);//输出 true
Integer num5=128;
Integer num6=128;
System.out.println(num5==num6);//输出 false
int num7=66;
Integer num8=new Integer(66);
System.out.println(num7==num8);//输出 true

总结

面试官可能会问:int 和 Integer 有什么区别?

  1. int 是基础数据类型,而 Integer 是包装数据类型;
  2. int 的默认值是 0 ,而 Integer 的默认值是 null;
  3. int 在内存中直接存数据值, Integer 实际存储的是对象引用,当 new 一个 Integer 时实际上是生成一个指针指向声明的对象;
  4. Integer 必须实例化 new 才可以使用,而 int 不需要;
  5. int 可以使用 == 来对比两个变量是否相等,而 Integer 一定要使用 equals 来比较两个变量值是否相等,否则只是比较对象的地址: