javaequal
㈠ 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(地址引用不同)。