[填空題] 類Test定義如下:class Test{ public static void main(string args[]) { String s1
2021-07-20
[填空題] 類Test定義如下:class Test{ public static void main(string args[]) { String s1="abc"; String s2=new String(s1); if(s1==s2) System.out.println("s1==s2"; if(s1.equals(s2)) System.out.println("s1.equals(s2)"); }}那么程序的執(zhí)行結果為: 【15】
正確答案:s1.equals(s2)
參考解析:本題考查的是:“==”和equals的區(qū)別。=操作符專門用來比較變量的值是否相等。比較好理解的一點是:int a=10;int b=10;則a==b將是true。但不好理解的地方是: String a=new String("foo");String b=new String("foo");則a==b將返回false。對象變量其實是一個引用,它們的值是指向對象所在的內存地址,而不是對象本身。a和b都使用了 new操作符,意味著將在內存中產(chǎn)生兩個內容為"foo"的字符串,既然是“兩個”,它們自然位于不同的內存地址。a和b的值其實是兩個不同的內存地址的值,所以使用“==”操作符,結果會是false。誠然,a和b所指的對象,它們的內容都是"foo",應該是“相等”,但是==操作符并不涉及到對象內容的比較。對象內容的比較,正是equals方法做的事。
詞條內容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學等領域),建議您咨詢相關領域專業(yè)人士。