equal和==均表示相等的意思,但是它们在进行实际的相等判定时,却有非常大的区别:
“==”:
1.运用在基本数据类型的时候,比较的是它们实际的值是否相同。
2.运用在引用类型的时候(如String),比较的是两个引用的地址是否相等(也就是是否指向同一个对象)。
“equal”:
1.equal()方法是java.lang.Object的方法,(也就是所有的Java类都会有的方法,它可以被程序员覆盖重写,)
通过自定义的方式来判定两个对象是否相等。
2.java.lang.String类是一个特殊的类,它不可以被继承,它的euqal()方法用来比较字符串的字符序列是否完全相等。
举例说明一下:
public class EqualTest{
public static void main(String[] args){
//定义三个字符串对象
String a = "1234";
String b = "1234";
String c = new String("1234");
//3种不同的布尔判定
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a.equals(c));
}
}
执行结果是:
true
false
true
第1个true:a,b指向同一个对象(Java的双引号表达式本身就会创建一个字符串对象,例如,1234,
就创建了一个值为1234的String对象),所以a,b都是创建了值为1234的String对象。
第2个false:a,c指向不同的对象,(因为通过new String()来创建的字符串会单独生成一个对象)
第3个true:在java.lang.String类中的equal()方法是用来比较字符串的字符序列是否完全相等,因此a和c的字符序列是相等。