今天朋友問了一個面試題,題目如下:
public class Example{ String str=new String("good"); char[]ch={'a','b','c'}; public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+" and "); Sytem.out.print(ex.ch); } public void change(String str,char ch[]){ str="test ok"; ch[0]='g'; } }
執行結果為 good and gbc ,為啥 str沒改變而ch 改變了呢??
下面將粗略畫一下程序執行過程中JVM中內存情況,來解釋為什麼為啥 str沒改變而ch 改變了
執行Example ex=new Example(); 後沒有執行方法change之前的內存情況如圖: