Java中String声明字符串两种方法的区别

  • 格式:doc
  • 大小:13.50 KB
  • 文档页数:1

下载文档原格式

  / 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java中String声明字符串两种方法的区别

方法1:String msg = “Hello”;

直接赋值。

该方法执行后会自动将字符串“Hello”保存在字符串池中。则第二次使用直接赋值时,先检测字符串池中是否已存在“Hello”,如果存在,则将堆地址赋给引用。

Public class StringDemo{

String msg1 = “Hello”;

String msg2 = “Hello”;

}

执行后使得msg1与msg2的指向的地址是相同的。即内存中只有一个Hello的值。被两个引用所指向。String类采用了共享的设计模式。

方法2:String msg =new String(“Hello”);

构造方法赋值。

该方法执行后,会开辟两个内存空间(耗费资源),msg会指向其中的一个,而另一个没有引用指向,就会成为垃圾内存被清理掉。使用构造方法声明的“Hello”不会自动保存到字符串池中,不能共享。

Public class StringDemo{

String msg1 = new String(“Hello”);

String msg2 = new String(“Hello”);

}

执行后,虽然内容一样,但是存放的地址是不一样的。他不会自动保存在字符串内存池中。

//可使用intern()方法手工保存至字符串池中。

相关主题