看板 java 關於我們 聯絡資訊
問題如下 String[] data = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"}; 要讓data這個字串陣列反轉 public static void reverse(String[] str) { String[] str2=new String[10]; for(int i=0;i<str.length;i++) str2[i]=str[str.length-1-i]; str=str2;//問題點 } 當在main呼叫reverse(data)時 data這個陣列的值卻沒被修改 請教大大為何str=str2這行指令不能將結果修改到data -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.39.122
stimim:call by reference, call by value 04/14 12:15
hate9527:Call by value, call by reference 04/14 12:15
pa015596:reverse(data) 不是收到data的參考嗎 04/14 12:39
pa015596:那str=str2不是將str2的參考指定到data嗎? 04/14 12:41
luoqr:str=data 然後str又=str2 所以 data 不會被改到 04/14 12:57
adrianshum:所以我常說把這當成 pass-by-ref 的常會搞錯。看精華區 04/14 13:25
adrianshum:z-3-4-2 的討論 04/14 13:27
pa015596:謝謝大大們的講解 04/14 13:58