字符串对象创建问题

前面我们说到字符串比较中,equals()是逐位比较字符串内容是否完全一致,而==比较的是内存地址,也就是比较是否为同一对象。那字符串对象是如何创建的呢?
Java虚拟机将内存分为了栈和堆,因为字符串太高频使用了,所以内存专门开辟出一块区域来存放高频使用的字符串,我们就先叫它字符串池。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
也就是说String a=“hello”,先去字符串池里找有没有hello字符串,有就直接用,没有就在字符串池里创建一个并调用;
而String a=new String(“hello”),先在堆里创建一个hello,再去字符串池里找,有就算了,没有就在池里再创建一个,此时指向的是堆里的hello。

猜你喜欢

转载自blog.csdn.net/weixin_48185778/article/details/107756849