从零开始学Java【13】

从零开始学Java【13】


​ 学习视频:https://www.bilibili.com/video/BV12J41137hu?p=50

数组的定义

image-20220429144155225

数组的声明和创建

image-20220429144634784

image-20220429145704501

第一行代码是定义一个数组,第二条代码是为这个数组赋予一个长度,那么在定义的时候可以合二为一:

image-20220429145827899

这就是数组的声明以及创建,接下来就可以直接用了,比如给它赋值。

Java内存分析

image-20220429153456535

new出来的一些东西都放在了堆里面,存放具体的值都放在栈里面

image-20220504135625994

比如上图即为过程。

如果在上图中取nums[10],因为这个序列没有赋值,则会报错,显示:

image-20220504140140859

java.lang.ArrayIndexOutOfBoundsException,说明数组“越界”了,数组越界接下来还会讲到

静态初始化/动态初始化

image-20220504141229895

静态初始化就是一开始定义的时候就开始赋值,动态初始化是先定义,需要的时候再赋值,而定义完了之后未赋值之前是默认为当前类型的值的,比如int为0,string为null等等。(这种叫做隐式初始化

数组边界

image-20220504142742562

数组的使用

  • 打印全部的数组元素

image-20220504152218177

  • 计算所有元素的和

image-20220504152511622

  • 查找最大元素

image-20220504152846593

  • 利用增强型for循环来打印输出。输入arrays.for来输入增强循环

image-20220504153443375

后面的arrays是数组(已定义),而前面的array变量代表的是数组中的每个元素,对array变量进行输出

  • 数组作为方法入参

image-20220504161343749

在主函数外面定义一个方法,形参和主函数差不多(因为主函数也是数组的一种,只不过主函数是String类型,自定义方法是int类型),那么就可以在主函数先定义一个int类型数组arrays,然后就可以作为实参传入自定义的方法里面了。

  • 数组作为返回值

image-20220504164840934

当数组作为返回值时,在主函数需要用一个容器进行装载,用alt+enter可以进行自动补全。

多维数组

image-20220504165120356

image-20220504183953850

如下图,二维数组相当于数组的数组,比如arr[0]里面就包含着arr[0] [0],以此类推。那么二维数组的赋值有:

int[][] array ={{1,2},{3,4},{5,6}};

如果要取出具体的值,取法为:

System.out.println(arrays[0][0]);

只有精确到二维才能够正确取到,如果只有一维则输出一个对象:[I@16b98e56

以此类推,三位四维数组也如此,也可以用打印函数来输出二维数组每个值

image-20220504190041208

获取具体的长度:

arrays.length//一维数组的长度
arrays[0].length//二维数组的长度

打印二维数组:

for (int i = 0; i < arrays.length; i++) {
    for (int j =0;j<arrays[i].length;j++){
        System.out.println(arrays[i][j]);
    }
}

总结

  • 数组的声明与创建可以分为三步:

image-20220429150353550

那么这个数组在存储空间中是这样的:

image-20220429150458910

所以可以看到,数组中的所有元素都必须是类型一样的

另外,如果数组中某个数没有赋值,那么它默认为这个类型的默认值,比如int为0,string类型是null.

  • 取这个数组的某个元素,引用它的下标索引即可,比如nums[1],如图:

image-20220429150942135

其中的索引,就是[]里面的值。

  • 获取数组的长度:arrays.Length。比如下图:

image-20220429151558738

就可以用num.length来获取数组的长度,从而决定for循环的次数。

  • 数组的四个基本特点

image-20220504141944738

  • 数组边界

image-20220504143338062

posted @ 2022-05-04 19:18  机智的小柴胡  阅读(32)  评论(0)    收藏  举报