Java语言基础(6)——数组的定义、创建、声明、初始化、访问以及复制

数组用于存储元素个数固定、元素类型相同有序

数组的定义
定义数组的要素:
——数组长度
——元素类型
——数组变量的名称
——数组维度(支持多维数组的语言需要提供)
其中, 数组长度在数组创建时指定, 其余三要素在数组声明时指定

数组的声明
声明包含三部分:
——元素类型:基本类型或引用类型
——数组变量名称
——数组维度
一维数组的声明格式有两种,分别是
(1)元素类型[ ] 数组变量名称;
(2)元素类型 数组变量名称[ ];
例:

char s[]; char[] s; //基本类型数组
Point p[]; Point[] p; //引用类型数组
char[] s,m,n; //三个变量都是字符数组变量

数组的创建
(1)数组类型是一种引用类型,所以数组声明不分配数组的数据空间,而是创建一个对该类型数组的引用
(2)数组的数据空间可看做是一个对象实例,需要用new关键字来创建
(3)数组变量与数组对象不同,数组变量存储了对数组对象的引用
数组实例化:创建数组对象,并建立数组变量与数组对象之间的引用关系,
实例化的格式:
数组变量名称=new 元素类型[数组长度];
举例:

s = new char[20]; //创建有20个字符的数组
p = new Point[100]; //创建有100个Point引用的数组

数组的初始化
在创建数组对象时,使用元素类型的默认值对每个元素进行初始化。或者,使用以下方法进一步初始化:
(1)直接对数组的各个元素赋值,例:

Point[ ] p = new Point[100];
p[0] = new Point();
p[1] = new Point();

(2)使用数组初始化器:

String names[] = {“Jack”, “Wang”, “Lee”};
int a[] = {1, 2, 3};
Date d[] = {new Date(), new Date(), new Date()};

数组的访问
数组对象中的元素可以看作数组对象的成员变量,这些成员没有名称。所以只能通过“数组变量名称[索引值]”的方式访问
例:p[1]——访问由数组变量p指向的数组对象中索引为1的元素
索引值必须为int类型: 对于short、byte、char类型的索引值,编译器会自动将其转换为int类型
所有数组都包含表示元素个数的成员变量length

数组的复制
数组变量之间赋值是引用赋值,因此,无法通过变量赋值复制数组数据

int a[] = new int [6];
int b[];
b = a ;

引用赋值
正确的复制方法:
(1)使用循环语句逐个复制:

int[] target = new int[source.length];
for(int i = 0; i < source.length; i++)
target[i] = source[i];

(2)java.lang.System的静态arraycopy()方法:

System.arraycopy(Object source, int srcIndex,Object dest, int destIndex,int length);//source是被复制的数组;srcIndex是复制段起始的索引值;dest是复制的数组,length是复制段的长度

注意:dest的空间需预先分配好
例子:

public class ArrayCopyDemo {
public static void main(String[] args) {
char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',
'i', 'n', 'a', 't', 'e', 'd' };
char[] copyTo = new char[7];
System.arraycopy(copyFrom, 2, copyTo, 0, 7);
System.out.println(new String(copyTo));
}
}

运行结果:
运行截图
在这里插入图片描述

多维数组
声明:使用连续的[ ]说明数组维度,例:

int a[][]; 
int[][] a;

创建与初始化
需指明至少一个嵌套层的数组长度
必须从最高维指定数组长度
例:

a = new int[4][4]; //为每一维分配内存
a = new int[4][]; //为第一维分配内存, 生成不规则数组
a[0] = new int[10];
a[1] = new int[5];
...
a = new int[][4]; //不合法

多维数组中, 每一维的长度均可通过length变量获取

public class ArrayLength{
public static void main(String[] args){
int[][] a={{1,2,3,4,5},{1,2,3}};
System.out.println(a.length +;+ a[0].length +;+ a[1].length);
}
}

输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值