Java中String声明字符串两种方法的区别
- 格式:doc
- 大小:13.50 KB
- 文档页数:1
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()方法手工保存至字符串池中。