publicclassTestArray{publicstaticvoidmain(String[]args){//reviseanarraydirectlywithoutreturnString[]test={"test"};voidReturn(test);System.out.println(test[0]);//reviseanarraydirectlywithreturnString[]test2={"test2"};String[]outtest2=arrayReturn(test2);System.out.println(outtest2[0]);//reviseanarraybyanotherwayString[]test3={"test3"};voidReturn2(test3);System.out.println(test3[0]);}publicstaticvoidvoidReturn(String[]a){String[]b={"b"};a=b;System.out.println("ainvoidReturnis"+a[0]);}publicstaticString[]arrayReturn(String[]a){String[]b={"b"};a=b;System.out.println("ainarrayReturnis"+a[0]);returna;}publicstaticvoidvoidReturn2(String[]a){a[0]="b";System.out.println("ainvoidReturn2is"+a[0]);}}輸出:ainvoidReturnisbtestainarrayReturnisbbainvoidReturn2isbb在傳遞一個引用類型的時候,使引用類型指向別的引用類型,為什么在main方法中的值依然不變?(voidReturn方法)作為返回值傳出,可以修改,這是什么原理?(arrayReturn)對引用了類型直接修改,可以改變值(voidReturn2)表達的很模糊,大概不明確例子中的值怎么傳的。希望可以知道原理和明確的理論,不是只記住這種情況是這樣。
關于java的引用傳遞和值傳遞
30秒到達戰(zhàn)場
2019-03-29 22:11:17