classDemo{Stringtemp="hello";//此處為了方便,屬性暫時不封裝};publicclassRefDemo03{publicstaticvoidmain(Stringargs[]){Demod1=newDemo();//實例化Demo對象,實例化之后里面的temp="hello"d1.temp="world";//修改temp屬性的內(nèi)容System.out.println("fun()方法調(diào)用之前:"+d1.temp);fun(d1);System.out.println("fun()方法調(diào)用之后:"+d1.temp);}publicstaticvoidfun(Demod2){//此處的方法由主方法直接調(diào)用d2.temp="123";//修改temp值}};第一個問題:d1.temp="world";//修改temp屬性的內(nèi)容這段代碼是不是生成了一個匿名對象"world",然后d1.temp指向它,"hello"變成了垃圾?第二個問題:fun()方法調(diào)用之后輸出的結(jié)果是123不是說“因為String為一個特殊的類,其內(nèi)容不能改變”嗎?那temp到底是Demo的一個屬性還是Demo里面的一個內(nèi)部類呢?為什么d2指向d1的堆內(nèi)存后可以改變d1里面的String類型的值呢?是不是也像上面的代碼一樣,先生成匿名對象"123",之后"world"變成垃圾?
java引用傳遞的問題
慕容3067478
2019-04-13 08:46:35