Skip to content

10.数组

数组可以看成是多个相同类型数据的组合,实现对这些数据的统一管理,例如:

{1,10,30,100}

{"apple","orange","banana"}

10.1 一维数组

10.1.1数组的定义和创建

在创建数组的同时就为数组元素分配空间并赋值,

数组元素:数组中的每一个数据,称为数组的一个元素(element)

数组中的元素可以是任何数据类型,包括基本数据类型和引用类型

数组中元素的个数,称为数组的长度(length)

10.1.2 数组的定义和创建

数组类型 数组名 [ ]

数组类型[ ] 数组名

指定数组长度,数组长度一经定义,固定不变。

数组的长度(length)必须>=0;

length为只读,不能被赋值。

数组名 = new 数据元素类型[ 元素个数 ]

数组是存储多个相同类型变量的对象。数组的所有元素保存在堆内存中。 创建一个数组就是在堆中创建一个数组对象。 数组创建后立即拥有默认值。 1、整数类型数组的默认值是0 2、String类型定义的数组,默认值是null 3、char类型定义的数组,默认值是0对应的字符 4、浮点类型定义的数组,默认值是0.0 5、boolean类型数组的默认值是false 索引从0开始。 连续分配

10.1.3 数组的初始化

​ 在创建数组的同时就为数组元素分配空间并赋值

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

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

java
        int ages1[] =  {10,20,30};
        int ages2[] =  new int[]{10,20,30};

10.1.4 数组赋值

Java中,数组元素的下标从0开始;

元素的下标可以是整型常量或整型表达式;

数组的查询效率高,可以通过下标进行对数组的定位检索。

java
 ages1[1] = 200; //通过赋值语句修改数组的内容
 System.out.println("ages1[0]\t"+ages1[0]);
 System.out.println("ages1[1]\t"+ages1[1]);
 System.out.println("ages1[2]\t"+ages1[2]);

10.1.5 数组的遍历,

通过下标和数组的length(长度)遍历数组。小标【0,length-1】

java
int ages[] =  {10,20,30};
for (int i = 0; i <ages.length ; i++) {
   System.out.println("ages["+i+"]:\t"+ages[i]);
}

增强for

for(迭代的数据类型 变量名:数组(可迭代的对象)){}

java
int ages[] =  {10,20,30};
for ( int age :  ages) {
	System.out.println(age);
}

10.1.6 数组的异常

当访问数组是下标小于0 或者大于等于数组的长度则会出现如下异常

10.2多维数组

10.2.1 数组的声明、创建

数组类型 数组名 [ ] [ ]

数组类型[ ] [ ] 数组名

数组类型[ ] 数组名 [ ]

java
ages = new int[][]{
	{10,20},
	{10,20,30}, };


int[][] ages2 = {
	{10,20,30},
	{11,21,31},
};

int[][] ages3 = {
	{10,20,30},
	{11,21,31,41},
};

10.2.2 二维数组的遍历

java
//二维数组遍历
        for (int i = 0; i < ages3.length; i++) {
//            int[] classAges = ages3[i];
            for (int j = 0; j <ages3[i].length ; j++) {
                System.out.print("ages3[i][j]:"+ages3[i][j]+"\t");
            }
            System.out.println();
        }

10.3 数组练习

已知两个一维数组:{1,2,3,4,5}和{6,7,8},将这两个一维数组合并成一个一维数组{1,2,3,4,5,6,7,8}。

生成一个4*6的二维整型数组,使用随机数填充,遍历输出该数组的所有值,并且找出最大值。

java
import java.util.Random;
import java.util.Scanner;

/**
 * 项目: java1112
 * 创建时间:2020/11/14  11:31
 * 作者 :jshand
 * 描述 :数组的练习
 */
public class Test4 {

    public static void main(String[] args) {

//        1 已知两个一维数组:{1,2,3,4,5}和{6,7,8},将这两个一维数组合并成一个一维数组{1,2,3,4,5,6,7,8}。
        int[] arr1 = {1,2,3,4,5};
        int[] arr2 = {6,7,8};

        int[] newArr = new int[arr1.length + arr2.length ];
        for (int i = 0; i < arr1.length; i++) {
            newArr[i] = arr1[i];
        }


        for (int i = 0; i < arr2.length; i++) {
            newArr[arr1.length+i] = arr2[i];
        }
        for (int i = 0; i < newArr.length; i++) {
            System.out.println("newArr[i]\t"+newArr[i]);
        }


        //生成一个4*6的二维整型数组,使用随机数填充,遍历输出该数组的所有值,并且找出最大值
        Random random = new Random();
        int[][] rndNums = new int[4][6];
        for (int i = 0; i < rndNums.length ; i++) {
            for (int j = 0; j <rndNums[i].length ; j++) {
                rndNums[i][j] = random.nextInt(100);
            }
        }


        int max = 0;
        for (int i = 0; i < rndNums.length ; i++) {
            for (int j = 0; j <rndNums[i].length ; j++) {
                if(rndNums[i][j]>max){
                    max = rndNums[i][j];
                }
            }
        }
        System.out.println("随机最大值max:"+max);

    }
}

10.4 数组的排序

Released under the MIT License.