public class Demo3_String {
public static void main(String[] args) {
//demo3();
//demo4();
String s1="ab";//常量
String s2="abc";//常量
String s3=s1+"c";//变量
System.out.println(s3==s2);
System.out.println(s3.equals(s2));
}
private static void demo4() {
// byte b=3+4; 在编译时有常量优化机制,把7赋值给b
String s1="a"+"b"+"c";
String s2="abc";
System.out.println(s1==s2);//true,java中有常量优化机制
System.out.println(s1.equals(s2));//true
}
private static void demo3() {
// 将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
String s1="abc";//记录常量的地址值
String s2="abc";
String s3= new String("abc");//记录堆的地址值
System.out.println(s1== s3);//false
System.out.println(s1.equals(s3)+",s1=s3的值");
System.out.println(s2.equals(s1));
if (s1.equals(s2)) {
System.out.println("名字相同");
}else {
System.out.println("名字不同");
}
}