变量
- 类变量和RPC参数,尽量使用包装类型
- 变量存储
- 类变量 — JVM内存
- 成员变量 — 堆内存
- 局部变量 — 栈内存
- new 一个对象存储在堆里,通过栈中的引用来使用
- 一旦一个 String 对象在内存(堆)中被创建出来,就无法被修改
- 常量池
- 字符串常量池
- Class常量池
- 用于存储 编译器 生成的各种字面量和符号引用
- 运行时常量池
- 包括 Class常量池中的常量、字符串常量池中的内容
- 是每个类或接口的常量在运行时的表示形式
- 每一个运行时常量池都分配在Java虚拟机的方法区中,在类和接口被加载到虚拟机后,对应的运行时常量池就被创建出来
- 虚拟机启动过程中,会将各个Class文件中的常量池载入到运行时常量池中。所以,Class常量池只是一个媒介场所。在JVM运行时,需要把常量池中的常量加载到内存中,加载时,对于Class的静态常量池,如果是字符串则会装到字符串常量池
