他的回复:
## 华为云ID:hw73260125 ## 第三阶段:Java数组 ### 1.1 数组定义 #### 1.1.1 数组是声明一个连续的空间,每个空间容纳相同数据类型的数据。 - 动态定义,指定数组大小,不赋值。 ```java int[] a = new int[3]; ``` - 静态定义,通过赋值,同时指定数组大小。 ```java int[] a = new int[3]{3, 4, 5}; int[] a = {3, 4, 5}; ``` 没有初试赋值的元素会自动赋默认值: - 整数:0 - 浮点数:0.0 - 布尔:false - 字符:空 - 引用:null #### 1.1.2 访问数组元素 格式:数组名[索引] - 索引从0开始 - 索引是连续的 - 索引递增为1 不带索引打印的时候,只有数组名,输出的是地址。 ```java System.out.println(a); ``` #### 1.1.3 内存分配 - 栈内存:在方法中定义的局部变量 - 堆内存:存储new出来的内容(实体、对象) 不同的内存区域有特定的数据处理方式和内存管理方式 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/24/161853g53ldpx1utddcdqe.png) 从图中可以知道,声明时数组名是在栈中存放的一个地址,指向堆中的数组数据。根据索引,选择数组元素。 ### 1.2 数组遍历 使用for循环遍历数组所有元素。 数组长度:数组名.length ### 1.3 数组中的数组 二维数组:数组的元素又是数组。 二维数组的遍历:双重嵌套循环,注意循环使用的长度。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202109/24/172309xtaqfw62hm3ua1ph.png) 数组名.length是外层数组的长度,二维数组外层数组长度可以理解为行数。 数组名[1].length是内层数组的长度。二维数组内层数组长度就是列数。 ### 1.4 数组的排序 按照大小排序。按照排序算法的交换次数衡量算法优劣。 常用算法:冒泡排序、快速排序、插入排序等。 ### 1.5 数组最大值、最小值、过滤重复值 找出最大值、最小值。 过滤重复值就是只保留不重复的值。 ### 1.6 常用类Arrays - Arrays.toString(a) 按照一定格式输出数组元素 ```java System.out.println(Arrays.toString(a)); ``` - Arrays.sort(a) 把数组进行排序,数组会发生改变 - Arrays.copyOf(a, len) 复制数组,可以扩容