[問題] 用函數讓字串陣列反轉的問題

看板java作者 (sdfgdgf)時間13年前 (2012/04/14 12:07), 編輯推噓1(107)
留言8則, 5人參與, 最新討論串1/2 (看更多)
問題如下 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

04/14 12:15, , 1F
call by reference, call by value
04/14 12:15, 1F

04/14 12:15, , 2F
Call by value, call by reference
04/14 12:15, 2F

04/14 12:39, , 3F
reverse(data) 不是收到data的參考嗎
04/14 12:39, 3F

04/14 12:41, , 4F
那str=str2不是將str2的參考指定到data嗎?
04/14 12:41, 4F

04/14 12:57, , 5F
str=data 然後str又=str2 所以 data 不會被改到
04/14 12:57, 5F

04/14 13:25, , 6F
所以我常說把這當成 pass-by-ref 的常會搞錯。看精華區
04/14 13:25, 6F

04/14 13:27, , 7F
z-3-4-2 的討論
04/14 13:27, 7F

04/14 13:58, , 8F
謝謝大大們的講解
04/14 13:58, 8F
文章代碼(AID): #1FYFWSI2 (java)
文章代碼(AID): #1FYFWSI2 (java)