Java数组的含义及如何操作数组

目录
文章目录隐藏
  1. 数组含义
  2. 如何使用 Java 数组
  3. 使用循环操作 Java 中的数组
  4. 编程练习
  5. 使用 Arrays 类操作 Java 中的数组
  6. 使用 foreach 操作数组
  7. Java 二维数组

之前我们有一篇文章讲解了有关Java 的流程控制语句,本篇内容是接着上篇内容继续为大家讲解有关 Java 数组的定义,使用方法。

数组含义

问:编写代码保存 4 名学生的考试成绩。

答:简单啊,定义 4 个变量呗

问:那“计算全年级 400 名学生的考试成绩”,肿么办

答: 。。。。。。。

数组,就可以帮助你妥妥的解决问题啦!!

数组可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据,比如可以定义 int 型的数组 scores 存储 4 名学生的成绩

什么是数组

数组中的元素都可以通过下标来访问,下标从 0 开始。例如,可以通过 scores[0] 获取数组中的第一个元素 76 ,scores[2] 就可以取到第三个元素 92 啦!

练习:

定义了一个数组 scores ,用于保存五名学生的考试成绩,输出数组中的第二个成绩.

public class HelloWorld {
    public static void main(String[] args) {

		// 定义一个数组,保存五名学生的成绩
		int[] scores = { 78, 93, 97, 84, 63 };

		// 输出数组中的第二个成绩
		System.out.println("数组中的第 2 个成绩为:" + scores[1]);
	}
}

运行结果为: 数组中的第 2 个成绩为:93

如何使用 Java 数组

Java 中操作数组只需要四个步骤:

1、 声明数组

语法: 数据类型[ ] 数组名;

或者 数据类型 数组名[ ]

其中,数组名可以是任意合法的变量名,如:

int[] scores;//存储学生成绩的数组,类型为整型
double height[];//存储学生身高的数组,类型为浮点型
String[] names;//存储学生姓名的数组,类型为字符串

2、 分配空间

简单地说,就是指定数组中最多可存储多少个元素

语法: 数组名 = new 数据类型 [ 数组长度 ];

其中,数组长度就是数组中能存放元素的个数,如:

scores = new int[5];//长度为 5 的整数数组
height = new double[5];//长度为 5 的浮点型数组
names = new String[5];//长度为 5 的字符串数组

话说,我们也可以将上面的两个步骤合并,在声明数组的同时为它分配空间,如:

int[] scores = new int[5];

3、 赋值

分配空间后就可以向数组中放数据了,数组中元素都是通过下标来访问的,例如向 scores 数组中存放学生成绩

scores[0] = 89;
scores[1] = 79;

4、 处理数组中数据

我们可以对赋值后的数组进行操作和处理,如获取并输出数组中元素的值

System.out.println("scores 数组中第一个元素的值:" + scores[0]);

在 Java 中还提供了另外一种直接创建数组的方式,它将声明数组、分配空间和赋值合并完成,如

int[] scores = {78,90,87,34};//创建一个长度为 4 的整数数组

等价于:

int[] scores = new int[]{78,90,87,34};//new int[]的 [] 里必须为空,不能指定长度

使用循环操作 Java 中的数组

实际开发中我们经常使用循环控制数组成员的操作。如:

int[] scores = {78,91,84,67};//定义一个长度为 4 的数组
for(int i = 0;i < scores.length;i++){//循环变量 i 从 0 开始递增直接数组的最大长度 scores.length
    System.out.println("数组中第" + (i + 1) + "个元素的值是:" + scores[i]);
}

运行结果:

使用循环操作 Java 中的数组

其中, 数组名.length 用于获取数组的长度

需要注意的“小毛病”:

1、 数组下标从 0 开始。因此 scores[3] ,表示数组中的第 4 个元素,而并非第 3 个元素

2、 数组下标的范围是 0 至 数组长度-1 ,如果越界访问,就会报错。如:

int[] scores = new int[2];
scores[2] = 75;

运行时会报如下错误:

使用循环操作 Java 中的数组

上面错误信息的意思是数组下标超过范围,即数组访问越界。在上面的代码中创建一个长度为 2 的数组,因此数组下标范围是 0 到 1 ,而程序中下标出现了 2 ,即 scores[2] ,超过了范围,造成数组访问越界。

编程练习

小伙伴们,请根据上面所学知识,在代码编辑器中完成 JAVA 程序,实现输出数组中的最大值、最小值和平均值。

任务要求:

1、 定义一个整型数组,并赋初值 61, 23, 4, 74, 13, 148, 20

2、 定义变量分别保存最大值、最小值、累加值和平均值,并假设数组中的第一个元素既为最大值又为最小值

3、 使用 for 循环遍历数组中的元素,分别与假定的最大值和最小值比较。如果比假定的最大值要大,则替换当前的最大值;如果比假定的最小值要小,则替换当前的最小值

4、 循环执行过程中对数组中的元素进行累加求和

5、 循环结束根据累加值计算平均值,并打印输出相关内容

Java 代码:

public class HelloWorld {
    public static void main(String[] args) {
	// 定义一个整型数组,并赋初值
	int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };
	int max = nums[0]; // 假定最大值为数组中的第一个元素
	int min = nums[0]; // 假定最小值为数组中的第一个元素
	double sum = 0;// 累加值
	double avg = 0;// 平均值
	for (int i = 0; i < nums.length; i++) { // 循环遍历数组中的元素
            // 如果当前值大于 max,则替换 max 的值
	    if(nums[i] > max){
	        nums[i] = max;
	    }
            // 如果当前值小于 min,则替换 min 的值
            if(nums[i] > min){
               nums[i] = min;
            }
            // 累加求和
            sum = max + min;
	}
        // 求平均值
        avg = sum / 2;
	System.out.println("数组中的最大值:" + max);
	System.out.println("数组中的最小值:" + min);
	System.out.println("数组中的平均值:" + avg);
    }
}

运行结果:

数组中的最大值:61
数组中的最小值:61
数组中的平均值:61.0

使用 Arrays 类操作 Java 中的数组

Arrays 类是 Java 中提供的一个工具类,在 java.util 包中。该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序、搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴~~)。

要使用 Arrays 类,必须先导入对应的包:

import java.util.Arrays

Arrays 中常用的方法:

1、 排序

语法: Arrays.sort(数组名);

可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该数组的排序(按升序排列),如:

import java.util.Arrays;//使用 Arrays 类时必须添加此行,导入包
public class HelloWorld {
    public static void main(String[] args){
        //定义一个整形数组
        int[] scores = {78,93,97,84,63};
        //使用 Arrays 类的 sort()方法对数组进行排序
        Arrays.sort(scores);
        System.out.println("排序后数组中元素的值:");
        //循环遍历输出数组种元素值
        for(int i = 0;i<scores.length;i++){
            System.out.println(scores[i]);
        }
    }
}

运行结果:

排序后数组中元素的值:
63
78
84
93
97

2、 将数组转换为字符串

语法: Arrays.toString(数组名);

可以使用 toString( ) 方法将一个数组转换成字符串,该方法按顺序把多个数组元素连接在一起,多个元素之间使用逗号和空格隔开,如:

import java.util.Arrays;//使用 Arrays 类时必须添加此行,导入行
public class HelloWorld{
    public static void main(String[] args) {
        //定义一个整型数组
        int[] nums = new int[]{25,7,126,53,14,86};
        //使用 Arrays 类的 toString()方法将数组转换为字符串并输出
        System.out.println("输出数组 nums 中的元素:" + Arrays.toString(nums));
    }
}

运行结果为:

输出数组 nums 中的元素:[25,7,126,53,14,86]

Arrays 类还提供了许多其他方法来操作数组,这里简单列举其他方法,不做详细解答。

其他 Arrays 类操作数组的方法请看这里《Arrays 类操作 Java 数组方法总结》

使用 foreach 操作数组

foreach 并不是 Java 中的关键字,是 for 语句的特殊简化版本,在遍历数组、集合时, foreach 更简单便捷。从英文字面意思理解 foreach 也就是“ for 每一个”的意思,那么到底怎么使用 foreach 语句呢?

语法:

for(元素类型 元素变量:遍历对象){
    执行代码
}

我们分别使用 for 和 foreach 语句来遍历数组

import java.util.Arrays;
public class HelloWorld{
    public static void main(String[] args){
        //定义一个字符串数组
        String[] hobbys = {"mybj123","码云笔记","www.mybj123.com"};
        System.out.println("***使用 for 循环输出数组中的元素");
        for(int i = 0;i < hobbys.length; i++){
            System.out.println(hobbys[i]);
        }
        
        System.out.println();
        System.out.println("***使用 foreach 循环输出数组中的元素");
        for(String hobby : hobbys){
            System.out.println(hobby);
        }
    }
}

运行结果:

***使用 for 循环输出数组中的元素
mybj123
码云笔记
www.mybj123.com

***使用 foreach 循环输出数组中的元素
mybj123
码云笔记
www.mybj123.com

看到 foreach 的方便了吧!!

留个思考问题给大家:如果想在 foreach 语句中获取数组元素的下标,该如何做呢??

Java 二维数组

所谓二维数组,可以简单的理解为是一种“特殊”的一维数组,它的每个数组空间中保存的是一个一维数组。

那么如何使用二维数组呢,步骤如下:

1、 声明数组并分配空间

数据类型[][] 数组名 = new 数据类型[行的个数][列的个数];

或者是

数据类型[][] 数组名;
数组名 = new 数据类型[行的个数][列的个数];

举个例子

定义一个 4 行 3 列的数组

int[][] num = new int[4][3];

2、 赋值

二维数组的赋值,和一维数组类似,可以通过下标来逐个赋值,注意索引从 0 开始

//二维数组赋值
数组名[行的索引][列的索引] = 值;
// 定义一个 2 行 2 列的二维数组
int[][] num = new int[2][2];
给第 1 行第 1 列赋值为 2
num[0][0] = 2;

也可以在声明数组的同时为其赋值

数据类型[][] 数组名={{a1,a2...},{a11,a22...},{a21,a22...},...};

图解:

Java 二维数组

3、 处理数组

二维数组的访问和输出同一维数组一样,只是多了一个下标而已。在循环输出时,需要里面再内嵌一个循环,即使用二重循环来输出二维数组中的每一个元素。如:

public class HelloWorld{
    public static void main(String[] args){
        //定义一个两行三列的二维数组并赋值
        String[][] arr = {{"a1","a2","a3"},{"b1","b2","b3"}};
        //定位行
        for(int i = 0; i < arr.length; i++){
            //定位每行的元素
            for(int j = 0; j < arr[i].length; j++){
                //依次输出每个元素
                System.out.print(arr[i][j] + ",");
            }
            //换行
            System.out.println();
        }
    }
}

运行结果:

a1,a2,a3,
b1,b2,b3,

需要了解的:在定义二维数组时也可以只指定行的个数,然后再为每一行分别指定列的个数。如果每行的列数不同,则创建的是不规则的二维数组,如下所示:

int[][] = num = new int[3][];//定义一个三行的二维数组
num[0] = new int[2];//为第一行分配两列
num[1] = new int[3];//为第二行分配三列
num[2] = new int[4];//为第三行分配四列
num[0][0] = 1;//第一行第一列赋值 1
num[1][1] = 2;//第二行第二列赋值 2
num[2][2] = 3;//第三行第三列赋值 3
System.out.println(num[0][0]);
System.out.println(num[1][1]);
System.out.println(num[2][3]);

运行结果为:

处理数组

以上就是 Java 数组的含义及如何操作数组全部内容,希望对大家有帮助,接下来会为大家带来 Java 相关方法,敬请期待!

「点点赞赏,手留余香」

4

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » Java数组的含义及如何操作数组

2 评论

  1. 正在学习中。。

    1. 一起学习一起进步,哈哈

回复 吴尊 取消回复