String和new String()的区别
String是引用类型
- 字符串一旦创建,内容不能改变的。
String str1 = "A";
等号右侧是在常量池中创建了一个字符串"A",将"A"字符串赋值给String这个变量str1。
String str2 = new String("A");
在堆空间中创建了一个对象,对象的值是"A",这里的"A"并不是常量池中的"A",栈区存引用和基本类型,不能存对象,而堆区存对象。
str1 == str2为false str1.equals(str2)为true(==比较的是地址,equals比较的是值)。代码如下
![]()
![]()
巩固一下


String str3 = new String("A"); String str4 = new String("A");
str3和str4这都是在堆空间中分别创建了两块空间,恰好两块空间的值是一样的,但地址是不一样的。
注意:String不能被继承(String是被final修饰的,而被final修饰的类是不能被继承的)



浙公网安备 33010602011771号