//我的理解, 歡迎吐槽數組
注意String是引用型變量, 個人理解也就是指向型, 指向一個數據或變量, 畫圖理解最容易, string 指向的 數據的值是不可改變的, string類型變量改變時,只是改變指向app
例1:spa
public class test { public static void main(String[] args){ char[] list={'a','b','c','d','e'}; reverse(list); for(int i=0;i<list.length;i++) System.out.print(list[i]+" "); } public static void reverse(char[] list){ char[] newList=new char[list.length]; for (int i=0;i<list.length;i++) newList[i]=list[list.length-1-i]; list = newList; } }
這個例子的答案是主方法的 list 數組沒有受影響,下面我將 reverse 方法中 list 稱爲 reverse.list , 主方法的list 爲 main.list 加以區分code
調用 reverse 方法時,reverse.list 指向 main.list, 而後 reverse方法中,有一條 list = newList, 則將reverse.list 指向 reverse.newList, 因此該方法不會改變 main.list 的值blog
例2:string
package Java_test; public class Class432 { String m_kobe = "1"; String [] m_king = {"2"}; public static void main(String[] args) { Class432 app = new Class432(); app.mb_operate(app.m_kobe, app.m_king); System.out.println(app.m_kobe + app.m_king[0]); } static void mb_operate(String kobe, String [] king) { kobe = new String("3"); king[0] = new String("4"); } }
此例輸出爲:14class