JAVA基础(3) 数组

目录

一、什么是数组?

二、一维数组

三、多维数组

四、数组的常见异常

总结


一、什么是数组?

1.数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。

2.数组的组成:数组名、下标(或索引)、元素、数组的长度。

3.数组的特点:

  • 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
  • 创建数组对象会在内存中开辟一整块连续的空间。占据的空间的大小,取决于数组的长度和数组中元素的类型。
  • 数组中的元素在内存中是依次紧密排列的,有序的。
  • 数组,一旦初始化完成,其长度就是确定的。数组的长度一旦确定,就不能修改
  • 我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
  • 数组名中引用的是这块连续空间的首地址。

二、一维数组

1.声明格式:

元素的数据类型[] 一维数组的名称; (java写法)

元素的数据类型  一维数组名[]; (C语言写法)

//比如,要存储一组电脑数据
int[] id;
int[] computer;

//比如,要存储一组字母
char[] letters;

//比如,要存储一组姓名
String[] names;

//比如,要存储一组成绩
double[] grade;

2.说明

(1)数组的维度:在Java中数组的符号是[],[]表示一维,[][]表示二维。

(2)数组的元素类型:即创建的数组容器可以存储什么数据类型的数据。元素的类型可以是任意的Java的数据类型。例如:int、String、Computer等。

(3)数组名:就是代表某个数组的标识符,数组名其实也是变量名,按照变量的命名规范来命名。数组名是个引用数据类型的变量,因为它代表一组数据。

(4)注意:Java语言中声明数组时不能指定其长度(数组中元素的个数)。 例如: int a[10]; //错误的写法

3.静态初始化

(1)格式

       ①格式1:
         数据类型[ ] 数组名 = new 数据类型[]{元素1,元素2,元素3,...};
        或   
        数据类型[ ] 数组名;
        数组名 = new 数据类型[]{元素1,元素2,元素3,...};

        ②格式2:
        数据类型[ ] 数组名 = {元素1,元素2,元素3...};//必须在一个语句中完成,不能分成两个语句写

String[] student1 = new String[]{"Theodore","Andy"};
        
String[] student2;
student2 = new String[] {"Theodore","Andy"};
        
String[] student3 = {"Theodore","Andy"};

(2)补充:new:关键字,创建数组使用的关键字。因为数组本身是引用数据类型,所以要用
                    new创建数组实体。

(3)说明:

  • 如果数组变量的初始化和数组元素的赋值操作同时进行,那就称为静态初始化。
  • 静态初始化,本质是用静态数据(编译时已知)为数组初始化。此时数组的长度由静态数据的个数决定

4.动态初始化

(1)格式

        数组存储的元素的数据类型[] 数组名字 = new 数组存储的元素的数据类型[长度];
        或
        数组存储的数据类型[] 数组名字;
        数组名字 = new 数组存储的数据类型[长度];

int[] arr = new int[10];

或

int[] arr;
arr = new int[10];

(2)说明

  • 数组变量的初始化和数组元素的赋值操作分开进行,即为动态初始化。
  • 动态初始化中,只确定了元素的个数(即数组的长度),而元素值此时只是默认值,还并未真正赋自己期望的值。真正期望的数据需要后续单独一个一个赋值。
  • [长度]:数组的长度,表示数组容器中可以最多存储多少个元素。
  • 数组有定长特性,长度一旦指定,不可更改。
  • 后面有{}指定元素列表,就不需要在[]中指定元素个数了

5.数组元素

(1)表示:每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index)或下标,可以通过数组的索引/下标访问到数组中的元素。

(2)范围:Java中数组的下标从[0]开始,下标范围是[0, 数组的长度-1],即[0, 数组名.length-1]
数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];

6.数组的遍历

int[] arr = new int[]{1,2,3,4};
//打印数组的属性,输出结果是4
System.out.println("数组的长度:" + arr.length);

//遍历输出数组中的元素
System.out.println("数组的元素有:");
for(int i=0; i<arr.length; i++){
System.out.println(arr[i]);
}


三、多维数组

1.格式

        元素的数据类型[][] 二维数组的名称;  (推荐)
        元素的数据类型  二维数组名[][];
        元素的数据类型[]  二维数组名[];

2.静态初始化

int[][] arr = new int[][]{{1,0,2},{2,2},{1,0,1}};

3.动态初始化

(1)规则矩阵数组
        ①确定行数和列数
        元素的数据类型[][] 二维数组名 = new 元素的数据类型[m][n];
        其中,m:表示这个二维数组有多少个一维数组。或者说一共二维表有几行
        其中,n:表示每一个一维数组的元素有多少个。或者说每一行共有一个单元格
        此时创建完数组,行数、列数确定,而且元素也都有默认值
        ②再为元素赋新值
        二维数组名[行下标][列下标] = 值;

int[][] arr = new int[10][22];

(2)不规则数组

        ①先确定总行数
        元素的数据类型[][] 二维数组名 = new 元素的数据类型[总行数][];
        此时只是确定了总行数,每一行里面现在是null
        ②再确定每一行的列数,创建每一行的一维数组
        二维数组名[行下标] = new 元素的数据类型[该行的总列数];
        此时已经new完的行的元素就有默认值了,没有new的行还是null
        ③再为元素赋值
        二维数组名[行下标][列下标] = 值;

int[][] arr = new int[10][];

3.多维数组的长度和角标

  • 二维数组的长度/行数:二维数组名.length
  • 二维数组的某一行:二维数组名[行下标],此时相当于获取其中一组数据。它本质上是一个一维数组。行下标的范围:[0, 二维数组名.length-1]。此时把二维数组看成一维数组的话,元素是行对象。
  • 某一行的列数:二维数组名[行下标].length,因为二维数组的每一行是一个一维数组。
  • 某一个元素:二维数组名[行下标][列下标],即先确定行/组,再确定列。

4.多维数组的遍历(for循环的嵌套

for(int i=0; i<二维数组名.length; i++){ //二维数组对象.length
    for(int j=0; j<二维数组名[i].length; j++){//二维数组行对象.length
        System.out.print(二维数组名[i][j]);
    }
    System.out.println();
}

四、数组的常见异常

1.数组角标越界异常

        当访问数组元素时,下标指定超出[0, 数组名.length-1]的范围时,就会报数组下标越界异常:ArrayIndexOutOfBoundsException。

2.空指针异常

        当数组的每一行还未分配具体存储元素的空间,此时arr[0]是null,此时访问arr[0][0]会抛出NullPointerException 空指针异常。


总结

本篇对java数组进行了简单的整理,便于回顾和学习。部分内容源于互联网,如果侵权请联系作者删除。

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值