Re: [問題] 初學者的幾點小疑問

看板java作者 (痞子軍團團長)時間19年前 (2007/01/21 20:39), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/7 (看更多)
※ 引述《war3rd (war3rd)》之銘言: : 以下這二支小程式.... : 程式一: : public static void main (String[] args){ : Integer n1 = new Integer(47); : Integer n2 = new Integer(47); : System.out.println(n1==n2); : Integer i1 = 47; : Integer i2 = 47; : System.out.println(i1==i2); : Integer p1 = 147; : Integer p2 = 147; : System.out.println(p1==p2); : } : } : 因為小弟剛接觸java(自修) 如果覺得問題太蠢還請見諒 : 問題1:為何n1==n2(結果:false)而i1==i2(結果:true) 他們的值不是都相等嗎? : 還是Integer oo = new Integer (xx) 與 Integer oo = xx 二種方式有哪不同嗎? 一個有 new,一個沒有阿... n1 肯定不等於 n2 請看看 Object.equal() 或是 Integer.equal() 簡單地說,如果 == 兩邊是 obejct 的話,那是比較記憶體位置 : 問題2: 那又為啥同樣是 Integer oo = xx 的方式 : i1==i2(ture) 而p1==p2(false) 這又是為啥?我只不過數字修正了一下 至於 i1, i2, p1, p2,我沒有測試... 不過你應該是用到 auto boxing 的功能 [遠目] : 程式二: : class Letter { : char c; : } : public class test{ : static void f(Letter y) { : y.c='Z'; : } : public static void main (String[] args){ : Letter x= new Letter(); : x.c= 'a'; : System.out.println("1:x.c: "+x.c); : f(x); : System.out.println("2:x.c: "+x.c); : } : } : 問題3: 為何第二次的輸出 x.c的字元是Z 而不是a 呢? : ps: 如果有有違反板規請告知 我會自d的(因為不知算不算是作業文^^u) 請參考 Java 的參數傳遞 -- 侃侃長論鮮窒礙 網站:http://www.psmonkey.idv.tw 眾目睽睽無心顫 個人版:telnet://legend.twbbs.org 煢居少聊常人事 殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.197.241
文章代碼(AID): #15irxltr (java)
文章代碼(AID): #15irxltr (java)