一、回顧 == 的使用:
== :運(yùn)算符
-
- 可以使用在基本數(shù)據(jù)類型變量和引用數(shù)據(jù)類型變量中
-
- 如果比較的是基本數(shù)據(jù)類型變量:比較兩個(gè)變量保存的數(shù)據(jù)是否相等。(不一定類型要相同)
-
如果比較的是引用數(shù)據(jù)類型變量:比較兩個(gè)對(duì)象的地址值是否相同.即兩個(gè)引用是否指向同一個(gè)對(duì)象實(shí)體
-
補(bǔ)充: == 符號(hào)使用時(shí),必須保證符號(hào)左右兩邊的引用數(shù)據(jù)類型變量類型一致。
二、equals()方法的使用:
-
- 是一個(gè)方法,而非運(yùn)算符
-
- 只能適用于引用數(shù)據(jù)類型
-
- Object類中equals()的定義:
-
public boolean equals(Object obj) {
return (this == obj);
}說(shuō)明:Object類中定義的equals()和==的作用是相同的:比較兩個(gè)對(duì)象的地址值是否相同.即兩個(gè)引用是否指向同一個(gè)對(duì)象實(shí)體文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-475227.html
-
- 像String、Date、File、包裝類等都重寫了Object類中的equals()方法。重寫以后,比較的不是兩個(gè)引用的地址是否相同,而是比較兩個(gè)對(duì)象的"實(shí)體內(nèi)容"是否相同。
-
- 通常情況下,我們自定義的類如果使用equals()的話,也通常是比較兩個(gè)對(duì)象的"實(shí)體內(nèi)容"是否相同。那么,我們就需要對(duì)Object類中的equals()進(jìn)行重寫.
重寫的原則:比較兩個(gè)對(duì)象的實(shí)體內(nèi)容是否相同.文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-475227.html
//基本數(shù)據(jù)類型
int i = 10;
int j = 10;
double d = 10.0;
System.out.println(i == j);//true int會(huì)自動(dòng)類型提升double-->10.0
System.out.println(i == d);//true
boolean b = true;
System.out.println(i == b); //false
char c = 10;//10的ASCII碼就是10
System.out.println(i == c);//true
char c1 = 'A';
char c2 = 65; //A的ASCII碼就是65
System.out.println(c1 == c2);//true
//引用類型:
Customer cust1 = new Customer("Tom",21);
Customer cust2 = new Customer("Tom",21);
System.out.println(cust1 == cust2);//false
System.out.println(cust1.equals(cust2));
//false--->true(Customer類中重寫equals方法后這里輸出true)
String str1 = new String("atguigu");
String str2 = new String("atguigu");
System.out.println(str1 == str2);//false 因?yàn)榈刂凡煌?/span>
System.out.println(str1.equals(str2));//true
如何重寫equals()
手動(dòng)重寫舉例:
class User{
String name;
int age;
//重寫其equals()方法
public boolean equals(Object obj){
if(obj == this){
return true;
}
if(obj instanceof User){
User u = (User)obj;// 向下轉(zhuǎn)型 不轉(zhuǎn)的話User中的屬性就調(diào)用不了,將 obj 對(duì)象轉(zhuǎn)換為 User 類型的對(duì)象
return this.age == u.age && this.name.equals(u.name);
//判斷兩個(gè) User 對(duì)象的 age 屬性是否相等。
} //name是String類型所以要用equals比較
return false; //如果不是同一類型 直接返回false
}
}
----開(kāi)發(fā)中如何實(shí)現(xiàn):idea可以手動(dòng)ait+ins生成
toString方法
toString()方法
toString()的使用:
1. 當(dāng)我們輸出一個(gè)對(duì)象的引用時(shí),實(shí)際上就是調(diào)用當(dāng)前對(duì)象的toString()
s1=“hello”;System.out.println(s1);
//相當(dāng)于
System.out.println(s1.toString());
2. Object類中toString()的定義:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
其返回值是String類型,返回類名和它的引用地址。
3. 像String、Date、File、包裝類等都重寫了Object類中的toString()方法。
使得在調(diào)用對(duì)象的toString()時(shí),返回"實(shí)體內(nèi)容"信息
4. 自定義類也可以重寫toString()方法,當(dāng)調(diào)用此方法時(shí),返回對(duì)象的"實(shí)體內(nèi)容"
如何重寫toString()
5. 基本類型數(shù)據(jù)轉(zhuǎn)換為String類型時(shí),調(diào)用了對(duì)應(yīng)包裝類的toString()方法
int a=10;
System.out.println(“a=”+a);
舉例:
//自動(dòng)實(shí)現(xiàn)
@Override
public String toString() {
return "Customer [name=" + name + ", age=" + age + "]";
}
到了這里,關(guān)于Java面試題: == 和 equals() 區(qū)別,toString方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!