JAVA数组

本文详细介绍了数组的概念、用途及基本操作,包括定义、初始化、使用及排序等,并提供了二维数组的实例演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是数组?(what)

数组是具有相同数据类型且按照一定次序排列的一组变量的集合体。即用一个变量名表示一批数据。(一个数组在内存中会得到一段连续的空间)

2..为什么使用数组?(why)

在实际应用中,经常需要处理相同类型的一批数据,所以就引用了数组,为了简化代码

3.数组中有哪些基本概念?

  • 什么是数组元素?

    构成一个数组的每一个数据称为数组元素。

  • 什么是数组下标?

    下标是数组元素在数组中的位置。在一个数组中,数组下标使用整数表示的,从0开始,依次累加1。

  • 什么是数组大小

    数组中的元素个数叫做数组的大小,也叫数组的长度。

4.使用数组

  • 定义数组

  • 为数组元素分配内存

  • 数组元素初始化

  • 使用数组

5.定义数组

  • 定义方式有两种(推荐使用第一种,简单明了)

    int[] arr1;//第一种
    int arr2[];//第二种

  • 注意:

    • 数组是什么类型,数组的元素就是什么类型

    • 数组是引用类型,引用类型的默认值都是null

6.为数组分配空间

  • 要让系统为数组元素分配存储空间,必须指出数组元素的个数,并且通过new运算符为数组元素分配空间。

  • 语法格式:

    数组名 = new 数据类型【数组长度】;

    如:

    arr1 = new int[5];
    arr2 = new int[6];

  • 定义数组和分配空间可以同时进行

    int[]arr3 = new int[5];
    String[]arr4 = new String[5];

  • 注意:

    • int类型的数组是引用类型,int数组的元素是基本类型。

    • 数组是什么类型,数组元素就是什么类型。由于arr1是int类型的数组,所以arr1数组的元素也是int类型的,由于int类型的默认值是0,因此每个arr1数组元素的默认值是0.

7.数组元素初始化

  • 数组声明并为数组元素分配空间后,必须为数组元素初始化(初始化就是第一次赋值)后,才能使用数组。如果没有为数组元素初始化,那么数组元素也是有默认值的。

  • 可以通过数组下标为数组元素初始化

    arr1 [0] = 67;
    arr1 [1] = 77;
    arr1 [2] = 87;

  • 定义数组,为数组元素分配内存,数组元素初始化,这三步是可以写在一起的,有两种写法

    //第一种写法
    int[]arr1 = new int[]{1,3,5,6};
    //第二种写法
    int[]arr1 = {1,3,5,6}

8.使用数组

使用数组通常是求数组中的最大值,最小值,总和,平均值,遍历数组等等。

  • 使用增强for循环遍历数组

  • 格式:

    for(元素类型 变量名:要循环的数组或者集合){

    ......

    }

  • eg:

    public static void main (String[] args){
        int[]arr1 = new int[]{1,8,6,4};
        for (int i:arr1){
            system.out.println("数组元素的值依次为"+i);
        }
    }

  • 排序:常用的排序算法有冒泡排序,插入排序,选择排序,快速排序,堆排序,归并排序,希尔排序,二叉树排序,计数排序等等。

二维数组

1.定义二维数组

定义二维数组的语法规则如下:

数据类型[][] 数组名 或者 数据类型 数组名[][] 建议使用前者

前面的[]代表的是第一维,后面的[]代表的是第二维

2.为二维数组分配内存

int [][]arr1;//定义一个二维数组
arr1=new int[3][3];//为二维数组元素分配内存

注解:java是支持多维数组的,但是从内存分配来看,java只支持一维数组,或者说表面上的多维数组,实质上都是一维数组。二维数组实际上是个一维数组,这个一维数组的每一个元素又是个一维数组。

3.二维数组初始化

int[][]arr1=new int[][]{
{11,12,13}
{14,15,16}
{17,18,19}
};
//第二种方法
int[][]arr1={
 {11,12,13}
 {14,15,16,17}
 {18,19,20,21,22}
};

4.二维数组的遍历

  • 使用双重for循环遍历二维数组

  • public static void main(String[] args) {
    /*
     * 定义3个班级,第一个班级2名学生,第二个班级3名学生,第三个班级2名学生
     * 初始化三个班级的所有学生的成绩
     */
            int[][]arr1= {
                    {67,75},
                    {78,82,93},
                    {71,72},
            };
            //定义保存总成绩的变量total
            int total;
            //遍历二维数组,计算每个班的总成绩
            for(int i =0;i<arr1.length;i++) {
                    String str = (i+1)+"班级";
                    total = 0;
                    for(int j = 0;j<arr1[i].length;j++) {
                        total+=arr1[1][2];
                    }
                    System.out.println(str+"总成绩"+total);
                }
        }

5.Arrays类

JDK中提供了一个专门用于操作数组的工具类,即Arrays类,

方法返回类型说明
equals(array1,array2)boolean比较两个数组是否相等
sort(array)void对数组array的元素进行排序
toString(array)String将一个数组array转换成一个字符串
fill(array,val)void把数组array的所有元素都赋值成val
copyOf(array,length)与array数据类型一致把数组array复制成一个长度为length的新数组
binarySearch(array,val)int查询元素值val在数组中array中的下标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷亚文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值