當前位置:首頁 » 編程語言 » javaequal

javaequal

發布時間: 2023-01-25 06:25:51

java中,equal和==的區別是

一、比較對象為基本數據類型(byte,short,char,int,long,float,double,boolean)
比較兩個基本數據類型是否相等用==,因為只有類才會有equals方法。

備註:String不是基本數據類型

二、比較對象為引用數據類型

euqals和==本質上都是比較比較的是兩個對象的引用(內存地址)是否相同。equals()是Object類的方法 ,object類是所有類的基類,所以每個類都會繼承equals()方法。
但在String,Integer,Date在這些類當中重寫了equals方法,而不再是比較對象在堆內存中的存放地址了,而是比較它們指向的實體(內容)是否相同。

㈡ Java中關於==和equal的區別 以及equals方法重寫

//==與equals的默認行為都是比較引用是否相等,即是否引用了同一個對象。
//且==的行為是固定的,它總是比較引用,
//而equals的行為可以在子類中由用戶重寫。
//沒有equal方法。下面是例子。

public class EQ
{
public static void main(String[] args)
{
//s11,s12引用了兩個不同的對象,這兩個對象的所有欄位的值都相等
Student1 s11=new Student1("lili",'女',19);
Student1 s12=new Student1("lili",'女',19);
//s11,s13引用了一個相同的對象
Student1 s13=s11;

//這個if...else輸出s11!=s12,因為==默認是比較引用,
//而s11與s12引用的是兩個不同的對象
if(s11==s12)
{
System.out.println("s11==s12");
}
else
{
System.out.println("s11!=s12");
}

//這個if...else輸出not s11.equals(s12),
if(s11.equals(s12))
{
System.out.println("s11.equals(s12)");
}
else
{
System.out.println("not s11.equals(s12)");
}

//這個if...else輸出s11==s13,
//因為s11與s13引用的是同一個對象
if(s11==s13)
{
System.out.println("s11==s13");
}
else
{
System.out.println("s11!=s13");
}

//這個if...else輸出s11.equals(s13)
if(s11.equals(s13))
{
System.out.println("s11.equals(s13)");
}
else
{
System.out.println("not s11.equals(s13)");
}

//s21,s22引用了兩個不同的對象,這兩個對象只有age欄位的值相等
Student2 s21=new Student2("lili",'女',19);
Student2 s22=new Student2("張三",'男',19);

//這個if...else輸出s11!=s12,因為==總是比較引用
if(s21==s22)
{
System.out.println("s21==s22");
}
else
{
System.out.println("s21!=s22");
}

//這個if...else輸出s21.equals(s22),因為調用的是子類Student2的重寫的equals方法
if(s21.equals(s22))
{
System.out.println("s21.equals(s22)");
}
else
{
System.out.println("not s21.equals(s22)");
}
}
}
class Student1
{
Student1(String n,char s,int a)
{
this.name=n;
this.sex=s;
this.age=a;
}

String name;
char sex;
int age;
}
//重寫了繼承自類Object的equals和hashCode方法
class Student2
{
Student2(String n,char s,int a)
{
this.name=n;
this.sex=s;
this.age=a;
}
//重寫equals,如果兩個Student2對象的age值相等,則它們相等
//重寫此方法時,通常也必須重寫hashCode方法,以維護hashCode方法的常規協定,
//該協定聲明相等對象必須具有相等的哈希碼。
public boolean equals(Object obj)
{
boolean r=false;

System.out.println("Student2.equals被調用!");
if(null!=obj && obj instanceof Student2)
{
r=(this.age==((Student2)obj).age);
}
return r;
}
//重寫hashCode
public int hashCode()
{
return age;
}
String name;
char sex;
int age;
}

㈢ java中equals和equal的區別

equals()是object的方法,所以只是適合對象,不適合於基本類型,equals()默認是用"=="比較兩個對象的內存地址,如果想要比較兩個對象的內容,要重寫equals()方法才可。
equal:是用來比較兩個對象內部的內容是否相等的,由於所有的類都是繼承
自java.lang.Object類的,所以如果沒有對該方法進行覆蓋的話,調用
的仍然是Object類中的方法,而Object中的equal方法返回的卻是==
的判斷,因此,如果在沒有進行該方法的覆蓋後,調用該方法是沒有
任何意義的。

㈣ JAVA中的equal方法的格式和用法

java中的是equals,沒有equal,equals比較的是內容,只要值相同就是true。
如:
String
str
=
new
String("aaa");
String
str1
=
new
String("aaa");
boolean
bl
=
str.equals(str1);
結果就是:true。
備註:但是如果比較的是str==str1,這個結果就是false(地址引用不同)。

熱點內容
為什麼開鎖人不建議安裝密碼鎖 發布:2025-07-20 22:41:56 瀏覽:253
phpsocketlisten 發布:2025-07-20 22:39:07 瀏覽:428
絕地求生未來之役要下什麼伺服器 發布:2025-07-20 22:34:26 瀏覽:66
linux對比工具 發布:2025-07-20 22:31:45 瀏覽:750
音樂緩存在什麼文件夾 發布:2025-07-20 22:31:40 瀏覽:818
ftp伺服器怎麼清理 發布:2025-07-20 22:08:26 瀏覽:4
點膠緩存機 發布:2025-07-20 22:06:45 瀏覽:737
手機存儲已損壞 發布:2025-07-20 21:51:00 瀏覽:54
安卓手機存儲卡格式化 發布:2025-07-20 21:18:57 瀏覽:249
小廠編程 發布:2025-07-20 21:17:24 瀏覽:798