直接给字符串赋值
- 会被存进字符串常量池中
- 如果数据内容相同,则常量池不开辟新的空间(常量池特点,第一次如果没有这个字符串就放进去,如果常量池中已经有这个字符串,就直接取)
//字符串相同,a和b指向同一个地址
String a = "hello";
String b = "hell" + "o";
System.out.println(a == b); // ==比较的是地址 返回值true
new关键字创建对象
new出来的对象在堆里开辟空间,底层有一个char数组value指向常量池
内存:开辟了两个空间1.字符串常量池中的字符串 2.堆中的对象
String a = "hello";
String b = "hell" + "o";
System.out.println(a == b); // ==比较的是地址 返回值true
String c = new String("abc");
System.out.println(a == c); //一个在常量池一个在堆中,地址不同返回值false