韩顺平 零基础30天学会Java 学习笔记
第06章 数组、排序和查找(P156 - P191)
6.1 数组
-
数组初始化
-
方法1:动态初始化1
int a[] = new int[5];
- 方法2:动态初始化2
- 声明数组:
int a[];
int[] a;
(这时a是null) - 分配内存空间:
a = new int[5];
- 声明数组:
- 方法2:动态初始化2
-
方法3:静态初始化
int a[] = {2, 5, 6, 8}
-
-
注意事项和细节
- 数组是多个相同类型数据的组合,实现对数据的统一管理;
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用;
- 使用数组的步骤:
- 声明数组并开辟空间;
- 给数组各个元素赋值;
- 使用数组。
- 数组属于引用类型,数组型数据是对象(object)
-
数组赋值机制
-
数组默认情况下是引用传递,赋的值是地址。
-
值传递和引用传递
-
数组扩充
public class ArrayAssign{ //编写一个main方法 public static void main(String[] args){ int[] arr1 = {1, 2, 3}; int[] arr2 = new int[arr1.length + 1]; for(int i = 0; i < arr1.length; i++){ arr2[i] = arr1[i]; } arr2[arr2.length - 1] = 4; arr1 = arr2; System.out.println("====arr1扩容后的元素===="); for(int i = 0; i < arr1.length; i++){ System.out.println(arr1[i]); } } }
-
6.2 排序
-
内部排序
需要处理的数据可以全部加载到内存中处理
-
外部排序
数据量过大,无法全部加载到内存中,需要外部存储进行排序
6.3 查找
- 顺序查找
- 二分查找
6.4 多维数组
-
二维数组
-
动态初始化:
int a[][] = new int[2][3];
-
动态初始化2:先声明,后开辟空间。
int a[][];
a = new int[2][3];
-
动态初始化3(列数不确定)
public class TwoDimensionalArray03{ //编写一个main方法 public static void main(String[] args){ /* 看一个需求:动态创建下面二维数组,并输出 i = 0: 1 i = 1: 2 2 i = 2: 3 3 3 一个有三个一维数组,每个一维数组的元素是不一样的 */ int[][] arr = new int[3][]; //创建二维数组,但是只是确定其中一维数组的个数,每个一维数组并未开辟空间 for(int i = 0; i < arr.length; i++){ //遍历arr没个一维数组 //给每个一维数组开辟空间 new //如果没有给一维数组new,那么 arr[i] 就是null arr[i] = new int[i + 1]; //遍历一维数组,并给一维数组的每个元素赋值 for(int j = 0; j < arr[i].length; j++){ arr[i][j] = i + 1; } } System.out.println("====arr元素===="); //遍历arr输出 for(int i = 0; i < arr.length; i++){ //输出arr的每个一维数组 for(int j = 0; j < arr[i].length; j++){ System.out.print(arr[i][j] + " "); } System.out.println(); //换行 } } }
-
静态初始化:
int [][] arr = {{1,1,1},{8,8,9},{100}};
-
-
二维数组使用细节和注意事项
- 一维数组的声明方式:
int[]x;
或者int x[];
- 二维数组的声明方式:
int[][] y;
或者int [] y[];
或者int y [][];
- 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。
- 一维数组的声明方式:
-
练习