为了账号安全,请及时绑定邮箱和手机立即绑定

java返回数组的内存问题

java返回数组的内存问题

肥皂起泡泡 2018-12-04 15:13:01
大家好!c++中,一个函数内部这样写:int* fun(){  int nums[] = { 4,5,6};     return nums;} 那么除非nums加static修饰,否则函数结束后nums的内存会被释放,外部不能再用。Java中这样写:  public static int[] ByNew()     {     int[] nums= new int[] {     1,2,3     };     return nums;     }当然没问题,new出来的数组不用担心函数结束后内存被释放但是如果这样写呢:  public static int[] ByStaticInit()     {         int nums[] = { 4,5,6};     return nums;     }   我担心数组存放在栈内存,函数结束后内存被释放,不知道是不是这样?请大家指教。(尽管下面测试代码运行没问题)public class StaticInitArry   {         public static int[] ByNew()     {     int[] nums= new int[] {     1,2,3     };     return nums;     }     public static int[] ByStaticInit()     {         int nums[] = { 4,5,6};     return nums;     }     public static void main(String[] args)     {     int nums[] =ByNew();     for(int i=0;i<nums.length;i++)     {     System.out.println(nums[i]);     }     //////////////////////////////////////////     int nums2[] =ByStaticInit();     for(int i=0;i<nums2.length;i++)     {     System.out.println(nums2[i]);     }          }   }   
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

Java自动管理栈和堆,程序员不能直接地设置栈或堆.你可以搜索一下java的四种引用类型。一旦对象没有被引用时会自动被回收

查看完整回答
反对 回复 2018-12-08
  • 2 回答
  • 0 关注
  • 607 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信