摘自JavaGuide面试
- Java 是编译与解释共存的语言
基础知识
1.字符型常量 字符串常量
字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)
char占2个字节
2.泛型 什么是类型擦除 介绍下常用的通配符
泛型的本质是参数化类型
java在编译期间会把所有的泛型信息都擦除。 泛型的三种使用方式:泛型类 泛型接口 泛型接口
可以通过反射添加不同类型的集合参数
List<Integer> list = new ArrayList<>();
Class<? extends List> clazz = list.getClass();
Method add = clazz.getDeclaredMethod("add", Object.class);
//但是通过反射添加,是可以的
add.invoke(list, "kl");
System.out.println(list);
常用的通配符:T E K V ?
?表示不确定的 java 类型 T (type) 表示具体的一个 java 类型 K V (key value) 分别代表 java 键值中的 Key Value E (element) 代表 Element
3.== 和 equals()的区别
4.hashCode() equals()
5.为什么重写equals()是时必须重写hashCode()
6.基础类型和包装类型 包装类型不赋值就是 Null ,而基本类型有默认值且不是 Null。 基本类型存放在JVM栈中的局部变量表中 包装类型属于对象类型,对象实例存放在堆中
7.装箱拆箱 Integer i = 10 等价于 Integer i = Integer.valueOf(10) int n = i 等价于 int n = i.intValue();