分享数组的学习心得

本文详细介绍了Java中数组的定义、遍历、初始化、常见问题以及Arrays工具类的使用。内容包括动态初始化、静态初始化、数组遍历、数组最值获取、数组异常处理等,并通过实例演示了二维数组的定义和元素访问。
摘要由CSDN通过智能技术生成

数组(掌握)

一、数组的定义

在Java中,可以使用以下格式来定义一个数组,如下:

数据类型 [] 数组名 = new 数据类型 [元素个数或数组长度];

int [] x = new int [100];

上述语句就相当于在内存中定义了100个int类型的变量,第一个变量的名称为 x[0] ,第二个变量的名称为x[1] ,以此类推,第100个变量的名称为 x[99] ,这些变量的初始值都是 0 。为了更好地理解数组的这种定义方式,可以将上面的一句代码分成两句来写,具体如下:

//声明一个int[]类型的变量
int [] x;
//创建一个长度为100的数组
x = new int[100];

数组中的每个元素都有一个索引(也可称为角标),要想访问数组中的元素可以通过“x[0]、x[1]、……x[98]、x[99]”的形式。需要注意的是,数组中最小的索引是0最大的索引是“数组的长度-1”。在Java中,为了方便我们获得数组的长度,提供了一个length 属性,在程序中可以通过==“数组名.length”==的方式来获得数组的长度,即元素的个数。

接下来,通过一个案例来演示如何定义数组以及访问数组中的元素,如下所示。ArrayDemo01.java

//声明变量
int[] arr;
//创建数组对象
arr = new int[3];
System.out.println("arr[0] = " + arr[0]);//访问数组中的第一个元素
System.out.println("arr[1] = " + arr[1]);//访问数组中的第二个元素
System.out.println("arr[2] = " + arr[2]);//访问数组中的第三个元素
System.out.println("数组的长度是" + arr.length);//打印数组的长度

运行结果如下所示:

arr[0] = 0
arr[1] = 0
arr[2] = 0
数组的长度是3

在上述代码中声明了一个int[]类型变量arr,并将数组在内存中的地址赋值给它。在5~7行代码中通过角
标来访问数组中的元素,在第8行代码中通过length属性访问数组中元素的个数。从打印结果可以看出,数组中的三个元素初始值都为0,这是因为当数组被成功创建后,数组中元素会被自动赋予一个默认值,根据元素类型的不同,默认初始化的值也是不一样的。具体如下表所示。

元素的默认值

数据类型 默认初始值
byte、short、int、long 0
float、double 0.0
char 一个空字符(空格),即’\u0000’
boolean false
引用数据类型 null,表示变量不引用任何对象

如果在使用数组时,不想使用这些默认初始值,也可以显式地为这些元素赋值。接下来通过一个程序来学习如何为数组的元素赋值,如下所示。ArrayDemo02.java

int [] arr = new int[4];
arr[0] = 1;//为第一个元素赋值1
arr[1] = 2;//为第二个元素赋值2
//打印每个元素的值
System.out.println("arr[0] = " + arr[0]);
System.out.println("arr[1] = " + arr[1]);
System.out.println("arr[2] = " + arr[2]);
System.out.println("arr[3] = " + arr[3]);

运行结果如下所示:

arr[0] = 1
arr[1] = 2
arr[2] = 0
arr[3] = 0

在上述代码中,第1行代码定义了一个数组,此时数组中每个元素都为默认初始值0。第2、3行代码通过赋值语句将数组中的元素arr[0]和arr[1]分别赋值为1和2,而元素arr[2]和arr[3]没有赋值,其值仍为0,因此打印结果中四个元素的值依次为1、2、0、0。

在定义数组时只指定数组的长度,由系统自动为元素赋初值的方式==称作动态初始化。==

在初始化数组时还有一种方式叫做==静态初始化==,就是在定义数组的同时就为数组的每个元素赋值。数组的静态初始化有两种方式,具体格式如下:

1、类型 [] 数组名 = new 类型 [] {元素,元素,…};

2、类型 [] 数组名 = {元素,元素,元素,…};

上面的两种方式都可以实现数组的静态初始化,但是为了简便,建议采用第二种方式。接下来通过一
段代码来演示数组静态初始化的效果,如下所示。ArrayDemo03.java

//数组的静态初始化
int [] arr = {
   1,2,3,4};
//打印每个元素的值
System.out.println("arr[0] = " + arr[0]);
System.out.println("arr[1] = " + arr[1]);
System.out.println("arr[2] = " + arr[2]);
System.out.println("arr[3] = " + arr[3]);

注意:

上述代码中采用静态初始化的方式为数组每个元素赋予初值,分别是1、2、3、4。需要注意的是第2行代码千万不可写成int[] arr = new int[4]{1,2,3,4};,这样写编译器会报错。原因在于编译器会认为数组限定的元素个数[4]与实际存储的元素{1,2,3,4}个数有可能不一致,存在一定的安全隐患。

二、数组的遍历

在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。接下来通过一个案
例来学习如何使用for循环来遍历数组,如下所示。ArrayDemo04.java

//数组的静态初始化
int [] arr = {1,2,3,4};
//用for循环遍历数组的元素
for (int i = 0; i <arr.length ; i++) {
    System.out.println("arr["+i+"] = " + arr[i]);
}

运行结果如下所示:

arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4

上述代码中,定义一个长度为5的数组arr,数组的角标为 0~4 。由于for循环中定义的变量 i 的值在
循环过程中为 0~4 ,因此可以作为索引,依次去访问数组中的元素,并将元素的值打印出来。

三、高级for循环遍历数组

我们也可以通过高级for循环(for each循环)来访问数组中的每个元素,接下来我们通过一个案例来学习如何使用高级for循环来遍历数组。如下所示。ArrayDemo05.java

高级for循环(for each)的语法格式:

for(每一个元素的数据类型 临时变量名 : 要循环的容器的变量名){

​ 语句体;

}

//数组的静态初始化
int[] arr = {
   1, 2, 3, 4};
//用高级for循环遍历数组的元素
for (int i : arr) {
   
    System.out.println(i);
}

注意:for each循环当中的i的值指的是数组arr中的每个元素的值。

四、数组中常见的问题

4.1、数组的最值

在操作数组时,经常需要获取数组中元素的最值。接下来通过一个案例来演示如何获取数组中元素的
最大值,如下所示。ArrayDemo06.java

//数组的静态初始化
int[] arr = {1, 2, 3, 4, 5, 423, 32, 31231, 3432, 32, 435, 76};
//假设最大值的索引为0
int max = 0;
for (int i = 1; i < arr.length; i++) {
    //如果下一个索引的值比设置的max的值大,就将该值重新赋值给max
    if (arr[i] > max) {
        max = arr[i];
    }
}
System.out.println(max);
</
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值