String str= "hello world" 和 String str = new String ("hello world") 的区别:
String str1 = "hello world";
String str2 = new String ("hello world");
String str3 = "hello world";
System.out.println (str1 == str2); // false
System.out.println (str2 == str3); // false
System.out.println (str1 == str3); //true
str1,str2,str3 都在编译期间生成了字面常量和符号引用,运行期间字面常量 "hello world" 被存储在方法区中的常量池(只保存了一份)。str1 和 str3 储存的都是 "hello world" 在常量池中的地址,str2 中储存的是堆区中的对象的地址,而对象储存的是常量池中的地址。