String两种定义方式的区别

1.String类型的两种定义方法如下:

①String str = "i am a pig!";
②String str2 = new String("i am a pig");

最大的区别是第一种会存储在方法区,第二种会存储在堆区。

String str1 = "i am a pig!";
String str2 = "i am a pig!";

jvm会在常量池中找有没有相同的字符串,有就返回一个该字符串的地址,如果没有在常量池中生成该字符串。对于上述代码,str1和str2指向的其实是同一地址。第二种方法定义的字符串同样也是这样。

另外,如果对str1进行修改,比如执行如下操作

str1 += "ok!";

此时的str1指向的地址已经不是原来的str1指向的地址

猜你喜欢

转载自www.cnblogs.com/liujinyi256/p/12480784.html