❶ JAVA 整形變數之間的比較問題
你對==的理解有錯誤,如果是引用變數,當然比較的是引用變數的值,而引用變數的值就是對象的地址,所以當2個引用變數指向同一個對象時,返回true;而如果是數值型,同樣,只要他們的值相等就返回true。所以不用改
❷ java泛型方法的equals是如何比較的
java裡面的泛型是假的沒錯,泛型的出現更大的作用是為了編寫檢查。
java有多態的特性!調用對象的方法時候,取決於這個方法的實際實現。就假如說,你寫了Object s1 = "abc";Object s2 = "abc";然後調用二者的equals方法時,s1,s2雖然聲明為Object,但其實際的類型為字元串(String),並且字元串重寫了equals方法,所以s1.equals(s2)實際調用的是由String.class 內提供的方法。
調用哪一個方法取決於調用的時候實際對象究竟是誰,並且還要注意他有沒有重寫父類的方法。
❸ equals 的用法
equals 方法是 java.lang.Object 類的方法。
有兩種用法說明:
(1)對於字元串變數來說,使用「==」和「equals()」方法比較字元串時,其比較方法不同。
「==」比較兩個變數本身的值,即兩個對象在內存中的首地址。
「equals()」比較字元串中所包含的內容是否相同。
比如:
String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");
那麼:s1==s2 是 false //兩個變數的內存地址不一樣,說明指向的對象不 一樣,故不相等。
s1.equals(s2) 是 true //兩個變數的所包含的內容是abc,故相等。
注意(1):
如果: StringBuffer s1 = new StringBuffer("a");
StringBuffer s2 = new StringBuffer("a");
結果: s1.equals(s2) //是false
解釋:StringBuffer類中沒有重新定義equals這個方法,因此這個方法就來自Object類,
而Object類中的equals方法是用來比較「地址」的,所以等於false.
注意(2):
對於s3和s4來說,由於s3和s4是兩個字元串常量所生成的變數,其中所存放的內存地址是相等的,所以s3==s4是true(即使沒有s3=s4這樣一個賦值語句)。
❹ java怎麼用equals方法比較引用整型的對象
在class Value這么寫:
classValue{
intj;
publicbooleanequals(ValueanotherValue){
returnthis.j==anotherValue.j;
}
}
❺ equals可以對比integer嗎為什麼
Integer類型的要轉換為int去判斷,就好用了。
Integer a=new Integer(3);
Integer b=new Integer(3);
int a1=a.intValue();
int b1=b.intValue();
blean bb=a1==b1;//這里就輸出true了。
因為Integer是對象類型,你用equals比較是兩個引用是否指向同一個對象,很多時候不是指向同一個對象,所以,你用equals得出的結果就是false,比如上面的a和b用a.equals(b),結果是false,當然對於Integer類型還有其它特殊規定,但是明白到這里就足夠用了。
❻ equals可以比較integer類型嗎
應該都是輸出 != 因為你這里使用的是 Integer class,不是使用的基礎類型int, 類的比較是使用 equals 如果改成以下語句結果就會不同了。 if(i1.equals(i2)){ System.out.println("=="); }else{ System.out.println("!="); }
❼ java整形可以用equals表達式的比較嗎
不能,因為equals是object的方法,整形int沒有繼承Object
❽ java中equals()方法是怎麼進行比較的
因為你自己定義的Value類調用的equals是Object類的,此時的equals就相當於「==」;
而Integer的equals是重寫了Object的equals,此時比較的是2個Integer對象的值。。。
如果你不重寫equals,它比較的就是內存中的地址,也就是引用是否指向的是同一個對象。。。
如果有問題,請追問。。
希望可以幫助你,謝謝採納。。。
❾ java里整型,浮點型,字元串,比較時什麼時候用.equals() 什麼時候用 compareTo() 什麼時候用==
1. == 基本數據類型都用這個比較, 基本數據類型你知道吧~
Java裡麵包含8個基本數據類型,分別是:
boolean、byte、char、short、int、float、double、long
注意String 可不屬於基本數據類型,它是個類...
2..equals() 用於引用數據類型(除了上面的8個,都是引用數據類型,包括封裝類,Object子類等), 比較是否指向相同的對象,
例如 String str = "abc";
等效於: char data[] = {'a', 'b', 'c'}; String str = new String(data);
就是str 指向了 new String(data) 這個對象. 如果再有其他變數也指向這個對象,他們比較的結果就返回true;
由於此方法在Object里, 所以它有很多重寫, 具體要看說明;
另外``` equalsIgnoreCase()可以忽略大小寫;
3. compareTO可以比較兩個字元串並且得到順序.
按字典順序比較兩個字元串。該比較基於字元串中各個字元的 Unicode 值。將此 String 對象表示的字元序列與參數字元串所表示的字元序列進行比較。如果按字典順序此 String 對象在參數字元串之前,則比較結果為一個負整數。如果按字典順序此 String 對象位於參數字元串之後,則比較結果為一個正整數。如果這兩個字元串相等,則結果為 0;compareTo 只有在方法 equals(Object) 返回 true 時才返回 0, 所以,一定程度上, 個人認為它能取代. equals(), 可能是因為計算比較復雜, 佔用資源吧.
~寫的有點亂``應該能懂~