先看一段代码:
public class csdn_string {
public static void main(String[] args) {
String a = "hello";
String b = "hello";
String c = new String("hello");
System.out.printf("a==b:%b \na==c:%b",a==b,a==c);
}
}
结果:
a==b:true
a==c:false
Process finished with exit code 0
分析;
String = "XXXX";直接赋值会先去字符串常量池中(data区域)查看,如果有就引用;
String = new String("XXXX");不看字符串池。new 关键字创建的对象都是直接在堆中分配内存,新建对象。