作者pa015596 (sdfgdgf)
看板java
標題[問題] 用函數讓字串陣列反轉的問題
時間Sat Apr 14 12:07:54 2012
問題如下
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