作者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)
1F:→ weiyucsie:什麽问题? @.@ 09/17 23:36
2F:推 slalala: 什麽问题? @.@ 09/18 00:19
3F:→ godfat: 什麽问题? @.@ 09/18 00:35
4F:推 TWisely: 什麽问题? @.@ 09/18 10:12
5F:推 PsMonkey: 什麽问题? @.@ 这就是推文的乐趣 09/18 10:41
6F:推 jlovet: 什麽问题? @.@ 09/18 12:53
7F:推 corevalue:什麽问题? @.@ 09/18 14:47
8F:→ adrianshum:s麽问题? @.@ 没照顾长 ID 09/18 16:04
9F:推 guestciel:什麽问题? @.@ 第一次玩推齐ㄝ:D:D 09/18 20:33
10F:→ pico2k: 什麽问题? @.@ 09/19 14:11
11F:推 willieliao: 麽问题? @.@ 没照顾长 ID 09/24 04:05