文章目录
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、==和equals()
- == :它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型比较的内存地址)
- equals():它的作用是判断两个对象是否相等。但它一般有两种使用情况
情况一:类没有覆盖equals()方法。则通过equals()比较该类的两个对象时,等价于调用了Object类的equals()方法,也就是通过"=="比较这两个对象
public boolen equals(Object obj){
return (this==obj);
}
- 情况二:
类覆盖了equals()方法。一般,我们都会覆盖equals()方法来两个对象的内容相等;若它们的相等,则返回true(即,认为这两个对象相等);
package ab;
public class equals {
public static void main(String[] args) {
String s1,s2;
s1=new String("天道酬勤");
s2=new String("天道酬勤");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
String s3,s4;
s3="天道酬勤";
s4="天道酬勤";
System.out.println(s3==s4);
System.out.println(s3.equals(s4));
}
}
package ab;
public class equals {
public static void main(String[] args) {
// 字符串比较
String a = "1212";
String b = "1212";
if (a == b) {// true a==b
System.out.println("a==b");
}
if (a.equals(b)) {// true a.equals(b)
System.out.println("a.equals(b)");
}
// StringBuffer 对象比较,由于StringBuffer没有重写Object的equal方法,因此结果出现错误
StringBuffer c = new StringBuffer("1212");
StringBuffer d = new StringBuffer("1212");
if (c == d) {// false c != d
System.out.println("c == d");
} else {
System.out.println("c != d");
}
if (c.equals(d)) { // false 调用了Object类的equal方法
System.out.println("StringBuffer equal true");
} else {
System.out.println("StringBuffer equal false");
}
}
}