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指向的地址