2016 - 2024

感恩一路有你

字符串常量池在堆中还是方法区 在java中为什么String字符串可以作为对象来管理?

浏览量:1537 时间:2021-03-14 18:55:10 作者:admin

在java中为什么String字符串可以作为对象来管理?

据我们所知,Java中创建字符串(对象)的方法很多:[2]直接定义字符串常量

3]通过实例化字符串类来创建字符串对象

Java中的字符串可以直接作为对象操作。原则是什么?

例如:

1,literal quantity of string,string constant pool

Java中字符串的literal quantity是一对用双引号括起来的字符串,如“Chinese”。

字符串常量是常量池。当string STR=“string”时,编译器将检查在不朽生成中是否有对常量的引用。如果存在引用,编译器将直接将地址分配给堆栈。如果没有引用,编译器将首先在不朽生成中打开一个内存空间,然后将地址分配给堆栈指针。

也就是说,字符串对象的引用仍然存储在字符串常量池中。

2. 实例化string对象

该方法根据string对象重新创建一个string对象,在堆内存中添加新的内存块后,将指针赋给堆栈指针。

Java中的字符串常量池与Java中的堆和栈的区别?

Java常量池不在堆或堆栈中,它是独立的内存空间管理。

1. 堆栈:它存储基本类型变量数据和对象引用,但对象本身不存储在堆栈中,而是存储在堆(新对象)或常量池(字符串常量对象存储在常量池中)。堆:存储所有新对象。

3. 常量池:存储字符串常量和基本类型常量(publicstaticfinal)。

对于字符串:其对象的引用存储在堆栈中。如果它们是在编译时创建的(直接用双引号定义),则它们存储在常量池中。如果只能在运行时(New)确定它们,则将它们存储在堆中。对于相等的字符串,常量池中总是只有一个副本,堆中总是有多个副本。

字符串常量池在堆中还是方法区 java字符串常量池 元空间字符串常量池

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。