加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java数组初始化大小为零

发布时间:2020-12-14 16:46:22 所属栏目:Java 来源:网络整理
导读:在 java中声明数组时,我们必须使用new关键字动态分配内存. class array{ public static void main(String ars[]) { int A[] = new int[10]; System.out.println(A.length); }} 以上代码将创建一个包含10个元素的1D数组,每个元素4个字节. 输出为10. 但是当您
在 java中声明数组时,我们必须使用new关键字动态分配内存.
class array
{
  public static void main(String ars[]) { 
    int A[] = new int[10];
    System.out.println(A.length);
  }
}

以上代码将创建一个包含10个元素的1D数组,每个元素4个字节.
输出为10.
但是当您运行以下代码时:

class array { 
  public static void main(String ars[]) {
    int A[] = new int[0];
    System.out.println(A.length);
  }
}

输出为0.我想知道当你写新的int [0]时,Java会为数组分配一些内存吗?如果是多少?

解决方法

是的,它分配一些内存,但数量因JVM实现而异.你需要以某种方式代表:

>一个唯一的指针(使数组是!=每隔一个新的int [0]),所以至少要有1个字节
>类指针(对于Object.getClass())
>哈希码(System.identityHashCode)
>对象监视器(用于synchronized(对象))
>数组长度

JVM可以执行各种优化(如果尚未GC /重新定位,则从对象指针导出系统散列代码,使用单个位来表示未锁定的对象,使用单个位来表示空数组)等等),但它仍然需要分配一些内存.

编辑:例如,按照this post上的步骤,我的JVM报告新的int [0]的大小为16,而对于新的int [4]则为32.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读