equals方法是判断两个对象的内容是否相等,而==是判断两个引用是否指向同一个对象。Object类的equals()方法的实现是
public boolean equals(Object obj) {
return (this == obj);
}
String类的equals方法重写了Object类的equals方法,因而可以判断字符序列是否相等,也就是判断内容是否相等。
内存
栈:保存的是基本类型的变量的数据和对象的引用
堆:new出来的对象
静态域:static修饰的变量和方法
常量池:字符串常量
注:对象存放在堆中或者常量池中(比如像“java”这样的字符串常量对象)
public static void main(String[] args) {
String str1="abc";
String str2="abc";
/*
* 常量池中只有一个abc字符串,str1,str2是abc字符串对象的两个引用
*
*/
System.out.println(str1==str2);
String str3=new String("xyz");
String str4=new String("xyz");
/*
* 在堆中创建了两个对象
*
*/
System.out.println(str3==str4);
System.out.println(str3.equals(str4));//String 类重写了Object类的equals()方法
}
}