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修饰的类是不能被继承的)

posted @ 2020-10-23 22:40  阿水弟弟  阅读(1169)  评论(0)    收藏  举报