是時(shí)候展現(xiàn)一下我的JAVA基礎(chǔ)知識(shí)了,2333。我按照執(zhí)行順序給你寫注釋好了。Personp1=newPerson(10);//創(chuàng)建了一個(gè)對(duì)象//p1.age=10;modify(p1);//modify函數(shù)傳參,創(chuàng)建了一個(gè)在modify函數(shù)里面的局部變量p//你應(yīng)該明白p是一個(gè)新的變量,這里類似于執(zhí)行了p=p1,這兩個(gè)是指向的同一個(gè)對(duì)象的//p.age=10;p=newPerson(20);//注意,這里!這里!//這里是p被重新賦值了,p指向了新的對(duì)象newPerson(20);//p.age=20;//和p1指向的那個(gè)對(duì)象一毛線關(guān)系都沒有啊所以,你的代碼是在函數(shù)內(nèi)部,把局部變量給重新賦值了。是沒法修改到外面的對(duì)象的,因?yàn)槟阋呀?jīng)把唯一能訪問到外面那個(gè)p1的p給重新賦值了!publicstaticvoidmodify(Personp){p.age=20;//只有這樣才能修改對(duì)象!}同理,如果你寫成這樣:publicstaticvoidmodify(Personp){p=null;//對(duì)外面的p1沒有任何影響}我舉個(gè)例子,你就比較好理解了。你創(chuàng)建了一個(gè)100000000個(gè)元素的數(shù)組,比如就叫p1,你把數(shù)組通過參數(shù)傳進(jìn)函數(shù)里面,那么:這個(gè)參數(shù)p(類似于p=p1),p和p1他們是指向同一個(gè)對(duì)象。不是說modify(int[]p)重新創(chuàng)建了100000000個(gè)元素的數(shù)組。這個(gè)應(yīng)該很好理解。那么:然后你通過p的內(nèi)置函數(shù)怎么操作p都行,都是操作的那100000000個(gè)元素的數(shù)組。但是,你不能把p重新賦值啊。重新賦值它就不是之前那個(gè)數(shù)組啦!比如:你重新p=newint[100000000],就創(chuàng)建了一個(gè)新的100000000個(gè)元素的數(shù)組啊。你執(zhí)行p=null,也只是銷毀了這個(gè)引用,不讓它指向100000000個(gè)元素的數(shù)組而已。對(duì)外面p1的那個(gè)數(shù)組不會(huì)再有任何影響了。看到答案里好多人對(duì)這個(gè)有誤解額。。。說不是一個(gè)對(duì)象的。說不能在函數(shù)里改變參數(shù)指向的對(duì)象的。說int是傳值的。說什么的都有,2333。補(bǔ)充:關(guān)于JAVA的函數(shù)傳參數(shù),你應(yīng)該也聽說過,所謂"基本數(shù)據(jù)類型是傳遞的值,其它都是傳遞的引用"。個(gè)人理解是這樣的。你傳遞個(gè)Person的對(duì)象進(jìn)去,你可以用SetAge()什么的修改這個(gè)對(duì)象。但是基本的數(shù)據(jù)類型,比如Integer、String等等,他們沒有什么內(nèi)置函數(shù)能改變他們自己。所以,你傳遞進(jìn)去一個(gè)int的參數(shù),就算其實(shí)是傳遞的引用,你也只能對(duì)int做重新賦值,一重新賦值,就表現(xiàn)成傳遞的是"值"(永遠(yuǎn)影響不到函數(shù)外面)。