Java和C的数组区别

存储结构区别:
C数组:数组空间是一次性给定的,优先访问低地址,自底向上而放元素。
在内存中是连续存储的,并且所有数组都是连续的,都可作为一维数组看待。
如下图,一个二维数组就可以看成一个一维数组,只是里面存放的元素为一维数组。所以C中的数组是呈线性结构。
在这里插入图片描述
而Java中的数组就不一样了,在Java中,数组都是引用实体变量,呈树形结构,每一个叶子节点之间毫无关系,只有引用关系,每一个引用变量只引用一个实体。
如图,上面的例子是这样表示的。
在这里插入图片描述
声明,创建和初始化区别:
这个两者基本差不多。
在C中:数组[ ]中要给定一个常量,不能是变量。如果想不指定数组的确定大小就必须初始化,数组元素个数根据初始化内容来决定。
在Java中,一维数组和C中类似,二维数组可以不指定二维长度,每一行必须加{ },有两两种创建和赋值的方法。
假设定义一个二维数组:

int [][] array={
   {1,2,3}
   {4,5,6}
   {7,8,9}
   {10,11,12}
};

在C中,数字外的第一个括号完全可以去掉。可加可不加,如下

int arr[]={
   1,2,3
   4,5,6
   7,8,9
   10,11,12
  };

但是Java必须加,因为C中的数组是按线性结构顺序存储的,所以arr[0][4]与arr[1][0]是同一个元素,不会影响结果。但是在Java中是树形结构,每一个数组元素(即每一个实体)之间是没有联系的,所以Java中不存在arr[0][4]元素,必须加以括号分行写。

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值