當前位置:首頁 » 編程語言 » java比較對象

java比較對象

發布時間: 2022-12-25 12:21:12

『壹』 如何比較java對象是同一個對象

1.判斷兩個對象是否是同一個引用對象則用==,"=="比的是地址.因為如果地址相同,則就是同一個對象
2.obj1.equals(Object obj2),用來判斷兩個對象是否相等(前面給出的是相等的情況。如果你要不相等的話:!obj1.equals(Object obj2)就可以了

『貳』 java怎麼比較2個對象

//抽象父類
abstract class CompareObject {abstract double compareTo();}
//派生子類
class Position extends CompareObject {

double x,y;
public Position(double g,double h) {this.x=g;this.y=h;}
public double getx(){return x;}
public double gety(){return y;}
public static double compareTo(Position a,Position b) { //自己派生的方法
return Math.sqrt(a.x*a.x+a.y*a.y)-Math.sqrt(b.getx()*b.getx()+b.gety()*b.gety());
}
/*繼承父類的比較方法作用到子類對象中,必須在父類裡面定義比較的方法體,而你這里沒有。所以你可以選擇自己重新定義一個方法體。
* 也可以在父類裡面寫好比較的方法體。
*/
double compareTo(CompareObject ca, CompareObject cb) { //實現父類中的方法
// TODO Auto-generated method stub
return 0;
}

public static void main(String[] args){
//比較2點與原點距離之差
Position a=new Position (5,4);
Position b=new Position (7,3);
System.out.println("兩點到原點的距離之差為"+compareTo(a,b));
}
@Override
double compareTo() {
// TODO Auto-generated method stub
return 0;
}
}

『叄』 java怎麼比較2個對象

你這個compareTo方法是幹啥的?思路不清啊....
你應該寫的是一個點的對象(Position)..他要和別一個點(Position )去比較.所以至少你的Position 類中的compareTo這個方法里要獲得別一個點的對象.
也就是說應該在實現類中有這樣的形式
點1對象.compareTo(點2對象);//說白了就是你的實現類里這行
System.out.println("兩點到原點的距離之差為"+compareTo());
應該改成
System.out.println("兩點到原點的距離之差為"+a.mpareTo(b);
在計較的時候.也就是你的compareTo()這個方法里..就應該是對象1的距離-對象2的舉例
也就是類似這樣的.
Math.sqrt(a.getx()*a.getx()*+a.gety()*a.gety())-Math.sqrt(b.getx()*b.getx()+b.gety()*b.gety();//

『肆』 java怎麼只比較兩個對象的內容

使用 == 進行比較, 該方式比較的是變數是否同時指向一塊內存地址,如果是就返回true,否則返回false
使用對象本身的equals進行比較,equals首先會進行 == 比較,然後會進行邏輯比較,當然你可以自己定義自己的比較邏輯,比如JDK內置的String,Integer,Long等都是重寫了這個equals方法的。
總的來說就是 == 表示完全相等,而equals表示邏輯相等

『伍』 jAVA對象的比較

比較對象的時候有兩種相等的情況(看你需要哪一種)
第一種:地址相等,通過==號來比較他們是否是指向同一個地址
第二種:他們的屬性相等,有時候兩個對象只要他們的屬性相等我們就認為他們兩個是相等的,那麼這種比較就需要你自己重載equals方法,然後在裡面判斷他們的屬性,如果他們的屬性全班相等或根據你的需要哪些相等那麼他們就相等

比如有一個正方行類
Square s1 = new Square(5);
Square s2 = new Square(5);
這時候你只需他們的邊長相等,就認為他們是相等的,那麼equals方法就可以這樣寫

@Override
public boolean equals(Square s) {
return this.side = s.getSide();//side是邊長
}

『陸』 深入java的equals方法,怎麼比較兩個對象的

當定義一個類時,首先這個類會繼承Object類(所有類的父類)的equals方法,然後開發者可以根據具體業務場景去考慮要不要重寫equals方法。

publicbooleanequals(Objectobj){
return(this==obj);
}

上面代碼即是Object的equals方法的實現, == 判斷,即兩個對象的地址完全一樣的時候才相等。

當開發者定義類時不重寫equals方法,則實際調用中使用Object這個父類的equals方法實現。

下面看看String的equals方法:

publicbooleanequals(ObjectanObject){
if(this==anObject){
returntrue;
}
if(anObjectinstanceofString){
StringanotherString=(String)anObject;
intn=value.length;
if(n==anotherString.value.length){
charv1[]=value;
charv2[]=anotherString.value;
inti=0;
while(n--!=0){
if(v1[i]!=v2[i])
returnfalse;
i++;
}
returntrue;
}
}
returnfalse;
}

這就是String重寫的equals方法,可以仔細看看,很有參考價值。

接下來寫段類定義的代碼:

publicclassPerson{
privateStringname;//姓名
privateintage;//年齡
privateStringspeciality;//特長

@Override
publicbooleanequals(Objectobj){
//兩個對象是同一個時,直接returntrue
if(this==obj){
returntrue;
}
if(objinstanceofPerson){
//比較對象也是Person對象時,判斷name和age是否都相同
Personp=(Person)obj;
returnname.equals(p.name)&&age==p.age;
}
returnfalse;
}

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicintgetAge(){
returnage;
}

publicvoidsetAge(intage){
this.age=age;
}

publicStringgetSpeciality(){
returnspeciality;
}

publicvoidsetSpeciality(Stringspeciality){
this.speciality=speciality;
}
}

測試代碼:

publicclassTest{

publicstaticvoidmain(String[]args)throwsIOException{
Personp1=newPerson("張三",20,"java");
Personp2=newPerson("張三",20,"python");

System.out.println(p1.equals(p2));
}
}

根據Person重寫的equals方法可以知道,運行結果為 true

如果Person沒有重寫equals方法,那麼會調用Object的equals方法,運行結果為 false

所以實際怎麼比較兩個對象這完全是看開發者也就是你自己的意思

『柒』 有關於Java中對象比較「==」和「equals()」,下面有一個程序為例

this.title的數據類型是String,屬於引用數據類型,引用類型的比較一般使用equals方法來判斷兩個對象的內容是否相等。因為this.title是一個String對象,因而可通過點運算符來調用equals方法來比較兩個String對象的內容是否相等。
this.price的數據類型是double,屬於基本數據類型,基本數據類型的比較直接使用==來判斷其值是否相等。因為this.price是一個基本類型的變數不是一個對象,因而不能通過點運算符來調用equals方法。

『捌』 java怎麼比較2個對象

你這個compareTo方法是幹啥的?思路不清啊....
你應該寫的是一個點的對象(Position)..他要和別一個點(Position
)去比較.所以至少你的Position
類中的compareTo這個方法里要獲得別一個點的對象.
也就是說應該在實現類中有這樣的形式
點1對象.compareTo(點2對象);//說白了就是你的實現類里這行
System.out.println("兩點到原點的距離之差為"+compareTo());
應該改成
System.out.println("兩點到原點的距離之差為"+a.mpareTo(b);
在計較的時候.也就是你的compareTo()這個方法里..就應該是對象1的距離-對象2的舉例
也就是類似這樣的.
Math.sqrt(a.getx()*a.getx()*+a.gety()*a.gety())-Math.sqrt(b.getx()*b.getx()+b.gety()*b.gety();//

熱點內容
sqlserver連接驅動 發布:2024-05-06 00:33:34 瀏覽:645
存儲開銷 發布:2024-05-06 00:13:38 瀏覽:953
伺服器怎麼盈利 發布:2024-05-05 23:56:16 瀏覽:941
java網站培訓學校 發布:2024-05-05 23:43:11 瀏覽:40
淘寶搜索演算法 發布:2024-05-05 23:37:07 瀏覽:998
sqlwhencasethen 發布:2024-05-05 23:27:51 瀏覽:641
模架編程軟體 發布:2024-05-05 23:26:54 瀏覽:483
存儲過程異常 發布:2024-05-05 23:24:03 瀏覽:399
winxp訪問不了win7 發布:2024-05-05 23:05:23 瀏覽:734
演算法牛 發布:2024-05-05 22:43:40 瀏覽:720