JavaSE02 数组的基本知识

JavaSE02: 数组的基本知识

今天是超梦学习Java的第15天,一转眼就要结束基础部分的学习了,接下来四天也要为期末的离散数学好好复(yu)习了,在每天完成复习任务后会后多写博客,复习前面的知识哦~

什么是数组?

​ 简单来说,数组是一个存储相同类型数据的集合,因为它在内存中是连续的一片,所以我们用编号(也就是下标来管理它)。这些数据可以是基本数据类型也可以是引用数据类型,而数组本身也是一种引用数据类型。数组的长度一旦确定,就不能修改了。

一维数组

一维数组的声明

和其他数据类型一样,数组依旧遵循声明变量的规则:

type[] arr 或 type arr[]

如: int[] a; double b[]; String[] s;从变量声明的角度,前面一种声明方式是更容易理解的。

一维数组的初始化

①静态初始化:在定义数组的同时就为数组元素分配空间并赋值。也就是在声明时就把所有元素的值都确定了。有以下两种方式:

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

String names[] = {“张三”,“李四”,“王五”};

②动态初始化:声明数组为其分配空间但不赋值,在后面的使用再赋值。如:

	int[] arr = new int[3];//声明数组但不赋值
	arr[0] = 1;//第一个元素赋值为1

需要注意的是,若声明并new为其分配内存后,若在随后的使用不提供赋值操作,系统会默认提供初始化值。数值型的数据默认为0,char型默认为空,boolean默认为false,引用数据类型默认为null。数组也可以先声明但不分配内存,如:

	int[] arr;

但若在后面不分配空间就使用,会出现空指针异常,这将在后面的内存解析详细解释。

使用一维数组

正如前面所说,我们用new分配空间后才能使用数组。数组的元素在内存是连续存在的。所以我们可以通过下标来使用数组元素。数组元素的下标从0开始,所以最后一个元素是数组长度-1,每个数组都提供了length属性:

	int[] arr = new int[]{
    
    1,2.3}
	arr[0] = 10;//将第一个元素赋值为0
	for(int i = 0; i < arr.length; i++){
    
    
        System.out.println(arr[i])
    }//进行遍历

一维数组的内存解析

数组是引用数据类型,而引用数据类型存储的是地址值,通过这个地址值可以找到数组的元素,声明数组并分配内存:

	int[] arr = new int[4];

在这里插入图片描述
前面提过,如果只声明数组这个变量而不new出来,那么该变量在栈中就没有指向具体数组元素的地址,使用它时也就找不到数组元素来使用,这时会出现空指针异常。

二维数组

什么是二维数组?

在内存中,其实并没有二维数组这一说法。在前面的内容中,我们提到,一维数组的元素既可以是基本数据类型也可以是引用数据类型,而当一维数组每个元素都用来存储一个一维数组,就构成二维数组,这么说或许有些抽象,后面超梦将用内存解析图为你详细解析。

二维数组的初始化

①静态初始化:跟一维数组差不多的初始化方式:

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

需要注意的是,java的二维数组不一定要是规则矩阵形式。

②动态初始化:先声明再赋值

	int[][] arr = new int[3][4];//声明一个三行四列的二维数组,数组元素值默认初始化

还有这种方式:

	int[][] arr = new int[3][];

需要注意的是,每个一维数组需要再new出来才能使用:

	int[0] = new int[3];//第一个数组有三个元素
	int[1] = new int[2];
	int[2] = new int[4];

使用二维数组

同样地,二维数组通过下标去使用数组元素,也提供了length属性,下面用上面声明的数组来遍历:

	for(int i = 0; i < arr.length; i++){
    
    
        for(int j = 0; i < arr[i].length; j++){
    
    
            arr[i][j] = 1;//遍历每个元素并赋值为1
        }
    }

二维数组的内存解析

接近尾声了,那么就明明白白地安排上我们的二维数组内存解析吧~

写在最后:每次写博客的速度总是很慢,希望能够坚持下来并提高速度吧~后面一期将会为大家带来Arrays工具类的使用以及一些简单的数组算法

~

在这里插入图片描述

写在最后:每次写博客的速度总是很慢,希望能够坚持下来并提高速度吧~后面一期将会为大家带来Arrays工具类的使用以及一些简单的数组算法

猜你喜欢

转载自blog.csdn.net/weixin_45834777/article/details/107120159