数组

数组是相同类型数据有序集合,可以理解为是一个数据容器。

数组的特点

  1. 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
  2. 其元素必须是相同类型,不允许出现混合类型。
  3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
  4. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

数组的初始化

声明
一维数组的声明方式有两种
数据类型[] 数组名;(推荐使用这中方式)
数据类型 数组名[];
注意 :
1.声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。因此,声明数组时不能指定其长度(数组中元素的个数),例如: int a[5]; //非法
2.声明一个数组的时候并没有数组被真正的创建。
3.构造一个数组,必须指定长度。
初始化
由于数组是引用数据类型,所以数组变量中只能够存放null或者引用(地址),要想给数组进行初始化就必须分配堆区地址给数组变量。

初始化的方式有以下两种:

动态初始化
数组在初始化的时候必须指定数组的长度,数组中的每一个元素由系统赋值,赋值的规则如下所示:
byte short int long 默认值 0
float double 默认值 0.0
char 默认值 ‘\u0000’ 就是一个空字符
boolean 默认值 false
引用类型 默认值 null

格式:
数据类型[] 数组名 = new 数据类型[数组的长度];

数组在动态初始化的时候,系统会根据数组的长度动态分配连续的内存空间,并且会根据堆区默认值的特点给每一个数组元素赋值。
静态初始化
数组在初始化的时候,系统会根据指定元素的个数动态计算数组的长度,并且会根据用户指定的数值一一赋值给数组的每一个元素。

格式一: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,…};
格式二: 数据类型[] 数组名 = {元素1,元素2,元素3,…};

数组的拷贝

利用System.arrayCopy或者Arrays.copyOf方法。
System.arraycopy: 数组元素的拷贝,这是一个本地方法,不是Java实现的,是C实现的.
该方法有以下几个参数:
src: 源数组
srcPos: 源数组的开始索引
dest: 目标数组
destPos: 目标数组的开始索引
Length: 拷贝元素的个数

Arrays.copyOf(): 表示拷贝数组,可以实现元素的拷贝,还能够动态扩容和缩容,集合底层依赖这个方法,这个方法依赖System.arraycopy()
Arrays.copyOfRange: 表示拷贝数组一部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值