字符串实习在Java 7+中如何工作?

字符串实习在Java 7+中如何工作?,第1张

字符串实习在Java 7+中如何工作?

声明时,java中有一个叫做String Memory Pool的东西:

String str1="abc";

它去那个内存池而不是堆。但是当你写:

String str2=new String("abc");

如果再次输入,它将在堆上创建完整的对象

String str3 = "abc";

它不会在池上创建更多对象,它将检查池中是否存在此文字,并将其分配给该对象。但是写:

String str4 = new String("abc");

将再次在堆上创建一个新对象

关键是:

一个新对象将始终在您不断编写的时候在堆上创建多次:

new String("abc");

但是,如果您不使用关键字new继续直接分配字符串,则只会从内存池中引用它(如果内存池中不存在它,则会创建它)

intern()
方法查找字符串是否在内存池中(如果不是)将其添加到内存池并返回对其的引用。因此,使用此方法后,您的String引用不会指向堆上的任何对象,而是指向String内存池中的一个对象(还要注意,该内存池仅包含唯一的字符串)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5586960.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存