1、字符串的不变性
下图展示了如下的代码运行过程:
String s = "abcd";s = s.concat("ef");
备注:
- String reference variable:字符串引用变量
- String object:字符串对象
2、equals() 和hashCode()的关系
哈希码是设计用于提高性能的。equals()和hashCode()的关系是:
- 如果两个对象相等,那么它们一定有着相同的哈希码
-
即使两个对象有着相同的哈希码,但它们不一定相等
备注:
- Hash Function:哈希函数
- buckets:散列桶
3、Java异常类的层次结构
红颜色标注的方块属于编译时异常,这类异常必须通过在try-catch代码块里捕获异常或者在方法中用thorws声明抛出异常。
4、集合类的层次结构
注意Collections和Collection的区别:
备注:
- Collection:是集合类层次结构的最顶层接口。
-
Collecitons:这个类由操作集合对象的静态方法和集合对象组成。
5、Java同步机制
Java同步机制可以用一栋大楼来比喻阐述:
备注:
- special room:专用房间
- wait room:等待室
- hallway:走廊
6、引用别名机制
引用别名机制是指多个引用可以定位到同一个能被更新的内存地址,而这些引用变量可以是不同的类型。
7、栈和堆
下图展示了方法和对象在运行时在内存的存储位置:
备注:
- Stack:栈
- Heap:堆
8、Java虚拟机运行时数据区域
下图展示了java虚拟机运行时总体的数据区域:
备注:
- Thread:线程
- PC Register:程序计数器
- JVM Stack:Java虚拟机栈
- Native Method Stack:本地方法栈
- Heap:堆
- Method Area:方法区:
- Runtime Constant Pool:运行时常量池