静态区 常量池

静态区
静态变量(又叫类变量,有static修饰)和静态方法存放在静态区;

使用某一个类的时候,需要将该类的字节码文件加载到元空间;
在加载的过程中,会先检查类中有没有static修饰的成员;
如果有,就会优先将static修饰的成员加载到静态区。

创建类的对象之后,对象存放在堆中,对象的变量名存放在栈中main方法的栈帧中,存放的数据是对象在堆中的地址,而该类的静态成员是被所有该类的对象而共享,修改的都是同一个
静态区 常量池_第1张图片

==================================================================

常量池(在内存中)
声明一个常量为a,值为abc,这个常量放在常量池中;
当创建第二个常量b时,发现值也是abc,在常量池中已经有了,那么直接就让b直接指向常量池中的abc,所以二者用==比较的结果是true。
当创建c时,是通过创建对象的方式,重新为c开辟了一块内存来存放它,所以用双等号比较的结果是false.
静态区 常量池_第2张图片
享元模式同理:数值类型的范围是-128~127,就是为了减少内存的使用

你可能感兴趣的:(java学习,java)