1. 局部变量存储于栈内存;static的成员变量存储于方法区,不是static的成员变量存储于堆内存
    2. 实例变量的默认值:
      • byte、short、int:0
      • long:0L
      • float:0.0F
      • double:0.0
      • char:’\u000’
      • boolean:false
    3. 如何对Integer和Double类型判断相等
      1. 先转换为相同的基本类型再使用==
    4. int和Integer有什么区别,二者在做==运算时会得到什么结果?
      1. 二者在做==运算时,Integer会自动拆箱为int类型,然后再进行比较
    5. 对多态的理解
      1. 相同类型的变量、调用同一个方法时呈现出多种不同的行为特征
      2. 多态可以提高程序的可扩展性,在设计程序时让代码更加简洁而优雅。
    6. 把String设计成final的原因
      1. 安全:String被广泛使用
      2. 多线程中不需要同步的操作
      3. 性能:不变性保证了hashcode的唯一,加强了容器中利用String的效率
      4. 字符串常量池才有意义,节约内存
    7. 使用字符串时,new和””推荐使用哪种方式?
      1. 采用new的方式会多创建一个对象出来,会占用更多的内存,所以一般建议使用直接量的方式创建字符串。
    8. 两个字符串相加的底层是如何实现的
      1. 如果拼接的都是字符串直接量,则在编译时编译器会将其直接优化为一个完整的字符串,和你直接写一个完整的字符串是一样的。
      2. 如果拼接的字符串中包含变量,则在编译时编译器采用StringBuilder对其进行优化,即自动创建StringBuilder实例并调用其append()方法,将这些字符串拼接在一起。
    9. 静态内部类需要满足的规则
      1. 静态内部类可以包含静态和非静态成员
      2. 不能访问外部类的实例成员,只能访问它的静态成员
      3. 外部类的所有方法、初始化块都能访问其内部定义的静态内部类;
      4. 在外部类的外部,也可以实例化静态内部类
    10. 说一说你对泛型的理解
      1. 有了泛型以后,集合自动记住所有集合元素的数据类型,从而无须对集合元素进行强制类型转换。
    11. 泛型擦除
      List<String> list1 = ...;
      List list2 = list1;
    12. 说一说你对Java反射机制的理解
      通过反射机制,我们可以实现如下的操作:
      • 程序运行时,可以通过反射获得任意一个类的Class对象,并通过这个对象查看这个类的信息;
      • 程序运行时,可以通过反射创建任意一个类的实例,并访问该实例的成员;
      • 程序运行时,可以通过反射机制生成一个类的动态代理类或动态代理对象。
    13. Java反射在实际项目中有哪些应用场景?
      1. 使用JDBC时通过反射机制加载数据库的驱动程序;
      2. 注解/XML配置
      3. 面向切面编程(AOP)的实现方案,是程序运行时创建目标对象的代理类