java常量池
https://www.cnblogs.com/iyangyuan/p/4631696.htm 程序计数器 是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。 本地方法栈 是jvm调用操作系统方法所使用的栈。 虚拟机栈 是jvm执行java代码所使用的栈。 方法区 存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。 虚拟机堆 是jvm执行java代码所使用的堆。 Java中的常量池,实际上分为两种形态: 静态常量池 和 运行时常量池 。 所谓 静态常量池 ,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。 而 运行时常量池 ,则是jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在 方法区 中,我们常说的常量池,就是指方法区中的运行时常量池。 接下来我们引用一些网络上流行的常量池例子,然后借以讲解。 首先说明一点,在java 中,直接使用==操作符,比较的是两个字符串的引用地址,并不是比较内容,比较内容请用String.equals()。 s1 == s2这个非常好理解,s1、s2在赋值时,均使用的字符串字面量,说白话点,就是直接把字符串写死,在编译期间,这种字面量会直接放入class文件的常量池中,从而实现复用