总构造图
一、创建一个对象的内存过程
二、引用String常量
仔细体会s1、s2和s3、s4之间的区别:
public class Example9_1 {
public static void main(String args[]) {
String s1,s2;
s1=new String("we are students");
s2=new String("we are students");
System.out.println(s1.equals(s2)); //输出结果是:true
System.out.println(s1==s2); //输出结果是:false
String s3,s4;
s3="how are you";
s4="how are you";
System.out.println(s3.equals(s4)); //输出结果是:true
System.out.println(s3==s4); //输出结果是:true
}
}
注意:
s1 == s2 判断的是两参数的地址是否相等;
s1.equals(s2) 判断的是字符串内容是否相同。
equals(String s)方法用于比较当前String对象的字符序列是否与参数s指定的String对象的字符序列相同。
——
【揭秘】
s1和s2先new后赋字符串,故s1、s2有各自的地址,
再分别将"we are students"存入它们的地址。
因此输出结果为true false
s3和s4直接赋字符串,故先把字符串"how are you"放入常量池分配地址,然后s3、s4再对"how are you"的地址进行引用。
因此输出结果为true true
本文仅自用,部分图片来源于b站@黑马程序员
如能帮到你,不胜荣幸