大家好!
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]);   
        }   
 
           
    }   
}  
 
/* 
输出: 






*/