2 回答

TA貢獻377條經(jīng)驗 獲得超508個贊
你好:
原始類型(int, long, float, double, short, char等)可又直接使用==比較:
如:
int a = 1, b = 1;
a == b結(jié)果為true引用類型(也就是對象)其實也可又用==比較,不過這里的比較不是比較內(nèi)容了,而是比較對象在內(nèi)存中的地址,也就相當于C/C++中的指針。所以
String s = "abc", s1 = s;
這時候 s == s1結(jié)果為true,因為它們指向內(nèi)存中的同一個地址,而
String s = "abc";
String s1 = "abc";
這兩條語句看似都把"abc"同時賦給了s和s1,但實際上在內(nèi)存中是分配了兩塊內(nèi)存,一塊存放"abc",另一塊存放另一個"abc",s和s1的地址不同,所以
s == s1結(jié)果是false
那么如何比較它們的內(nèi)容而不是比較地址呢,java的基類Object中有equals方法,用于比較兩個對象的內(nèi)容是否相同,只要子類實現(xiàn)了該方法,就可以使用此方法進行比較,String這么強大的類當然實現(xiàn)了該方法,所以比較兩個字符串是否相同應該使用下面的方法:
s.equals(s1)或者s1.equals(s),這兩種方法的結(jié)果都是true望采納!

TA貢獻109條經(jīng)驗 獲得超149個贊
簡單的講,java中的8種基本數(shù)據(jù)類型都是在棧內(nèi)存中分配空間,==實際上就是比較他們的值是否相等。而除開這8種基本數(shù)據(jù)類型,其他的都屬于引用類型,創(chuàng)建的對象均是在堆內(nèi)存中分配空間,這時候==實際上就是比較他們的內(nèi)存地址是否相同?;緮?shù)據(jù)類型比值,引用數(shù)據(jù)類型比地址。現(xiàn)在你就這么簡單的了解就行,當你學到后面便會深入了解這些東西的!
添加回答
舉報