一句话:不用new的常量在常量池中,new的对象保存在堆中。
我们知道方法区中存放着class文件的信息,还包括用来存储class常量的常量池,方法区中两者什么关系?
举个例子:
String str1 = "abc";
String str2 = "ab";
str2=str2+"c";
System.out.println(str1==str2); //为FALSE
解释:str1指向常量池“abc”,str2指向堆中新开辟的空间,故地址不同。
一句话:不用new的常量在常量池中,new的对象保存在堆中。
我们知道方法区中存放着class文件的信息,还包括用来存储class常量的常量池,方法区中两者什么关系?
举个例子:
String str1 = "abc";
String str2 = "ab";
str2=str2+"c";
System.out.println(str1==str2); //为FALSE
解释:str1指向常量池“abc”,str2指向堆中新开辟的空间,故地址不同。