类型
-
int[][] a = new int[][]{}; a是哪些类型的实例(使instanceof判断为true)
- Object
- int[][]
对于object instanceof Boolean操作,若object为null,会不会抛出异常?若不会,其值是什么?
答:不会抛出异常,其值是false
内存模型
- 包装类的比较问题
Integer x = 1;
Integer y = 1;
Integer z = 2;
System.out.println(x == y); // true:编译器只为常量1分配一次空间(常量区)
System.out.println(x.equals(y)); // true:包装类会覆盖实现为比较类型与内容
System.out.println(x == z)); // false:常量1和2,在不同的地址空间
System.out.println(x.equals(z)); // false:常量1和2,无论地址和值都不相等
Integer x = new Integer(1);
Integer y = new Integer(1);
System.out.println(x == y); // false:x和y指向堆空间上的不同对象
System.out.println(x.equals(y)); // true:包装类会覆盖实现为比较类型与内容
- volatile的作用
- 根据JVM内存模型,线程会将主内存(物理内存)映射到本地内存(高速缓存),每个线程对主内存上修改(对象属性)对其他线程存在可见性问题(时效),volatile要求对直接在主内存读写,以此来保障可见性。
- volatile可阻止编译器对指令的乱序优化
常用工具类
System.out.println(new Date(0))的打印结果是?
答:The Jan 08:00:00 CST 1970覆盖对象默认的equals方法后,是否需要覆盖其hashCode实现
答:需要,基于HashMap规约,两个对象equals操作若为true,则需要有相同的hashcode。反之,没有要求。