A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尤洋 中级黑马   /  2012-8-2 11:12  /  1344 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在看张老师的视频时看到 可变参数在被调用时,编译器为该可变参数隐含创建了一个数组,在方法体中以数组的形式访问可变参数。我就产生了一个疑问,
我们知道在内存中,方法是先存入栈内存,方法中的参数变量也跟着进入,等方法调用结束后再释放内存,而数组却是在栈内存中先产生一个引用变量,
然后在堆内存中储存数组实体,并生成地址 与栈内存中的引用变量相对应以方便调用。
   那么可变参数在被方法调用时究竟是以什么形式在内存中运行的呢?是只在栈内存中运行,还是像数组一样在堆和栈 中同时运行?它是运行完毕后就直接释放内存,还是在运行完毕后等java虚拟机的垃圾回收机制自动处理掉呢?

3 个回复

倒序浏览
既然只是一数组的形式调用,而没有创建数组,那么就不会像数组一样在堆和栈中都运行,我认为它只是在栈内存中运行,当这个方法调用完成后,直接释放内存。
回复 使用道具 举报
这个问题。。。啧啧
回复 使用道具 举报
是个问题,呵呵我也想知道
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马