Re: 為什麼?!

看板java作者 (等等等等等等等等)時間19年前 (2007/02/08 21:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
※ 引述《vrgigi.bbs@bbs.mgt.ncu.edu.tw (夏傑)》之銘言: : 標 題: Re: 為什麼?! : 發信站: 中央資管龍貓資訊天地 (Thu Feb 8 16:12:20 2007) : 轉信站: ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!news.mgt.ncu!bbs : : ==> H45.bbs@ptt.cc (!H45) 提到: : : ※ 引述《vrgigi.bbs@bbs.mgt.ncu.edu.tw (夏傑)》之銘言: : : : public class Test{ : : : public static void main(String args[]){ : : : Aa obj=new Aa(5); : : : System.out.println("Aa= "+obj.i); : : : } : : : } : : : class Aa{ : : : int i=10; : : : public Aa(int i){ : : : i=i; : : ^^^^ : : this.i = i; : 為什麼就不能i=i呢? : 不是已經把原本的i=10改成i=5 了? : 你可以測試一些小東西來瞭解一下 第一款: public class Test { public static void main(String args[]) { Aa obj=new Aa(5); System.out.println("Aa= "+obj.i); } } class Aa { int i=10; public Aa(int i) { System.out.println(i); } } 結果1: 5 Aa= 10 ================================== 第二款: public class Test { public static void main(String args[]) { Aa obj=new Aa(5); System.out.println("Aa= "+obj.i); } } class Aa { int i=10; public Aa(int i) { i=3; System.out.println(i); } } 結果2: 3 Aa= 10 ==================================== 第三款: public class Test { public static void main(String args[]) { Aa obj=new Aa(5); System.out.println("Aa= "+obj.i); } } class Aa { int i=10; public Aa(int i) { this.i=i; System.out.println(i); } } 結果3: 5 Aa= 5 ============================== 抱歉po了很長 以上三種發現差別了麼? java會依區域塊來分別變數值 所以依你的寫法,Aa內的 int i=10 才會認定成是object.i 而你的參數int i,並沒有以 this.i = i 來指定為同一參數,所以java個別看待 你的想法是以i = i來指定,但是此行的意思只是 i = i = 5 這樣的意思而已, 以第二款例子又將 i = 3 重新定義就可以很清楚瞭解到 這個 i 跟 object.i 還是獨立的兩變數 以上如果有錯請指教.... By 一個java新手 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.199.35 ※ 編輯: moonforget 來自: 140.118.199.35 (02/08 21:58)
文章代碼(AID): #15oomT2T (java)
文章代碼(AID): #15oomT2T (java)