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

更新时间:01-27 教程 由 冷兮め 分享

我们知道,在Java中创建字符串(对象)常见有多种方式:

1、Java字面量

"Java字符串"

2、直接定义字符串常量

Stringstr="Java字符串";

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

Stringstr=newString("Java字符串");

而Java中的String字符串是可以直接当成对象来操作的,这是什么原理呢?

Java中的字符串本质上都是字符串对象

像以上定义“字符串”的方式其实在Java虚拟机中都是生成了字符串对象,只不过这些字符串对象在内存中的存取机制不同的。比如说:

1、字符串字面量、字符串常量池

Java中的字符串字面量就是一对用双引号括起来的字符串,比如:“中国人”。

字符串常量是永生代,通俗的说就是常量池,当遇到Stringstr="字符串"时,编译器会在永生代中检查是否存在这个常量的引用,若存在则直接把地址赋给栈;若不存在则先在永生代中开辟内存空间,然后把地址赋给栈指针。

也就是说,字符串常量池中存放的依旧是字符串对象的引用。

2、实例化字符串对象

这种方式会根据String对象再次创建一个String对象,从堆内存中new一块新内存后将指针赋给栈指针。

综上,无论是哪种方式创建的字符串,其本质依旧是字符串对象,所以在Java中字符串可以当成对象来管理。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流~我是科技领域创作者,十年互联网从业经验,我了解更多科技知识!
声明:关于《在java中为什么String字符串可以作为对象来管理》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2104524.html