public class Main {
public static void main(String[] args) {
String s1, s2;
s1 = new String("Good holiday.");
s2 = new String("Good holiday.");
System.out.println(s1.equals(s2));
System.out.println(s1 == s2);
}
}
每次new 操作时都会分配不同的内存地址,==比较对象的值是否相等,引用类型对象的值就是对象的内存地址,基本类型对象就是值就是字面量;Object中equals默认就是==操作,但是String中对于equals方法进行了重写,它比较的是字符串值是否相同;
显而易见都是"Good holiday."所以相等,
每new一次就分配不同的内存,equals比对的是值,==比对值还比对地址,故后面的为false
每次new String 是新创建字符串对象,同时引用指向不同;
== 是比较的两个对象,那么比较的是两个对象的引用,也就是两个对象是否为同一个对象,并不是比较的对象的内容
==是对基本类型是值比较对引用类型是地址比较
equals只有引用类型才有来自于object类默认是==
每次new String 是新创建字符串对象,同时引用指向不同;