从零开始学Java【13】
从零开始学Java【13】
 学习视频:https://www.bilibili.com/video/BV12J41137hu?p=50
数组的定义

数组的声明和创建


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

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

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

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

java.lang.ArrayIndexOutOfBoundsException,说明数组“越界”了,数组越界接下来还会讲到
静态初始化/动态初始化

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

数组的使用
- 打印全部的数组元素
 

- 计算所有元素的和
 

- 查找最大元素
 

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

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

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

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


如下图,二维数组相当于数组的数组,比如arr[0]里面就包含着arr[0] [0],以此类推。那么二维数组的赋值有:
int[][] array ={{1,2},{3,4},{5,6}};
如果要取出具体的值,取法为:
System.out.println(arrays[0][0]);
只有精确到二维才能够正确取到,如果只有一维则输出一个对象:[I@16b98e56
以此类推,三位四维数组也如此,也可以用打印函数来输出二维数组每个值

获取具体的长度:
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]);
    }
}
总结
- 数组的声明与创建可以分为三步:
 

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

所以可以看到,数组中的所有元素都必须是类型一样的。
另外,如果数组中某个数没有赋值,那么它默认为这个类型的默认值,比如int为0,string类型是null.
- 取这个数组的某个元素,引用它的下标索引即可,比如nums[1],如图:
 

其中的索引,就是[]里面的值。
- 获取数组的长度:arrays.Length。比如下图:
 

就可以用num.length来获取数组的长度,从而决定for循环的次数。
- 数组的四个基本特点
 

- 数组边界
 

                    
                
                
            
        
浙公网安备 33010602011771号