[填空題] 類(lèi)Test定義如下:class Test{ public static void main(string args[]) { String s1
[填空題] 類(lèi)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í)行結(jié)果為: 【15】
正確答案:s1.equals(s2)
參考解析:本題考查的是:“==”和equals的區(qū)別。=操作符專(zhuān)門(mén)用來(lái)比較變量的值是否相等。比較好理解的一點(diǎn)是:int a=10;int b=10;則a==b將是true。但不好理解的地方是: String a=new String("foo");String b=new String("foo");則a==b將返回false。對(duì)象變量其實(shí)是一個(gè)引用,它們的值是指向?qū)ο笏诘膬?nèi)存地址,而不是對(duì)象本身。a和b都使用了 new操作符,意味著將在內(nèi)存中產(chǎn)生兩個(gè)內(nèi)容為"foo"的字符串,既然是“兩個(gè)”,它們自然位于不同的內(nèi)存地址。a和b的值其實(shí)是兩個(gè)不同的內(nèi)存地址的值,所以使用“==”操作符,結(jié)果會(huì)是false。誠(chéng)然,a和b所指的對(duì)象,它們的內(nèi)容都是"foo",應(yīng)該是“相等”,但是==操作符并不涉及到對(duì)象內(nèi)容的比較。對(duì)象內(nèi)容的比較,正是equals方法做的事。
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢(xún)相關(guān)領(lǐng)域?qū)I(yè)人士。