作者tamamad (tamamad)
看板java
標題[問題] local variable
時間Thu Sep 17 22:54:02 2009
想請教各位一個 local variable的問題,程式碼如下:
public void func(){
byte[] buf = new byte[100];
func2( buf );
}
public void func2(byte[] formal ){
....
}
buf是一個local variable,JVM會將他放置在stack
而buf所指到的byte array, JVM會將它放置在 heap 區
我想問的重點是,我call function時,
如果引數部分傳給他的是一個 local variable(如程式碼 call func2 的那行 )
會不會有可能造成一些問題?
我的想法是,JAVA只有pass by value,所以當我用 buf 當引數時,
在func2裡的 formal 也會指到放在heap裡的byte array,
所以原則上這應該是沒問題的引數傳遞
然而我在實作上卻會出現一些問題,
後來我的解法是把要傳給func2的byte array reference宣告成 instance variable
但是百思不得其解,為什麼傳 local variable會出問題,
想請教板上各位高手,
鳩境 問題出在哪裡?
以上
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.241.164
※ 編輯: tamamad 來自: 114.32.241.164 (09/17 22:59)
※ 編輯: tamamad 來自: 114.32.241.164 (09/17 23:00)
→ weiyucsie:什麼問題? @.@ 09/17 23:36
推 slalala: 什麼問題? @.@ 09/18 00:19
→ godfat: 什麼問題? @.@ 09/18 00:35
推 TWisely: 什麼問題? @.@ 09/18 10:12
推 PsMonkey: 什麼問題? @.@ 這就是推文的樂趣 09/18 10:41
推 jlovet: 什麼問題? @.@ 09/18 12:53
推 corevalue:什麼問題? @.@ 09/18 14:47
→ adrianshum:s麼問題? @.@ 沒照顧長 ID 09/18 16:04
推 guestciel:什麼問題? @.@ 第一次玩推齊ㄝ:D:D 09/18 20:33
→ pico2k: 什麼問題? @.@ 09/19 14:11
推 willieliao: 麼問題? @.@ 沒照顧長 ID 09/24 04:05