qq_32129833
qq_32129833
采纳率100%
2015-11-26 14:35

JAVA中数组定义new分配内存空间的问题

已采纳

JAVA中在定义一个数组的时候,根据书上内容形式,举一个例子
int[] arr=new int[]{3,4,5,};
但是在实际中,我见到过或者使用更多的是
int[] arr={3,4,5};
这个时候要不要new去分配内存又有什么区别呢?
在JAVA中 是不是没有new 分配的时候 数组arr在内存栈中
new分配内存空间时 数组arr就到了堆内存中呢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • qq_32129833 qq_32129833 6年前

    现在也不是很理解,找了一个大神告诉我说 第二种是静态初始化,在编译的时候就初始化
    而new是动态初始化 在运行的时候才初始化
    数组里的数据一直都是在堆中的

    点赞 评论 复制链接分享
  • gao__yang gao__yang 6年前

    初始化数组的各种形式:第一种: int[]array=new int[3]; ("[ ]"中的3表示数组中元素的个数)
    第二种: int[]array={1,2,5,3,2}; (当数组有确定的元素时,可以直接使用大括号,)

    点赞 评论 复制链接分享
  • gao__yang gao__yang 6年前

    初始化数组的各种形式:第一种: int[]array=new int[3]; ("[ ]"中的3表示数组中元素的个数)
    第二种: int[]array={1,2,5,3,2}; (当数组有确定的元素时,可以直接使用大括号,)

    点赞 评论 复制链接分享
  • daidaineteasy 晓呆同学 6年前

    以上两种都是数组的静态初始化,区别是:

     第一种 new int[]{} 是放在堆区的,而arr是在栈区的,两者通过引用相互连接;
     第二种  直接在栈区的.
    

    如果是大量的代码还是第二种运行比较快。

    点赞 评论 复制链接分享
  • qq_32129833 qq_32129833 6年前

    现在也不是很理解,找了一个大神告诉我说 第二种是静态初始化,在编译的时候就初始化
    而new是动态初始化 在运行的时候才初始化
    数组里的数据一直都是在堆中的

    点赞 评论 复制链接分享
  • donghejk 太过平凡的小蚂蚁 6年前

    我知道的是这个样子的:new int[]{3,4,5,};这个在堆中开辟了一个空间用于存放这个数组对象,内容是数据。然后int[] arr=new int[]{3,4,5,};这句话的得在第一句话的基础上说。意思就是先在栈中开辟一个空间,然后把new int[]{3,4,5,};所产生数组对象的地址存放到栈中开辟的空间中。
    int[] arr={3,4,5};只开辟了一个空间,至于在栈中还是在堆中这个我也不确定,推断是在栈中。

    点赞 评论 复制链接分享