Java-数组

数组定义

数据类型[] 数组名 = new 数据类型[元素个数];
例如:

1
int[] array = new int[10];

分析:在内存中新建一个连续的内存空间,里面能够保存的是10个 int 类型的数据。这个内存空间名字是 array 。
左边:

  • int :数据类型,告诉我们这个数据空间里面保存的数据是什么类型,这里是 int 类型

  • [] : 这里定义的数据是一个数组类型。array 是一个【引用】数据类型

  • array:数组名,就是一个标识符,按照标识符的规则来

右边:

  • new :创建【对象】的关键字
  • int :表示这个空间里面只能保存 int 类型的数据
  • [10]: 表示这个数组的【元素个数】位 10,能够保存 10 个 int 类型数据

数组两种初始化方式

1
2
3
4
5
6
//第一种:动态初始化
int[] arr = new int[元素个数];
//[注]元素个数可以是一个变量,通过代码的执行获取

//第二种:静态初始化:
int[] arr = {2,3,4,5,7};

数组中常见的错误

1
2
3
4
5
6
NullPointerException;
//内存访问 null 地址空间异常
//在内存中任何对于null的操作都是系统不允许的
ArrayIndexOutOfBoundsException //bounds 有效
//数组所操作的下标超出了有效范围
//数组不能【越界操作】

NULL 地址

规定:内存从第一个字节,到内存的最大值,每一个字节看作一个单元,同一编号编号从0开始到内存的最大值。
【注意】

  1. 地址通常是用十六进制来表示
  2. 地址中比较特殊的是null内存编号为0的字节,这个字节收到系统保护,任何的程序都不能对这个地址进行访问和操作,只能【指向】
  3. 通常一个地址是保存在【引用数据类型】变量中

二维数组

1
2
3
4
5
6
7
int[] arr = new int[n];
int[] arr = {1,2,3,4,5,6};

//二维数组的定义格式:
//数据类型[][] 数组名 = new 数据类型[n][m];
//使用格式:
//数组名[一维下标][二维下标];

冒泡和选择排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//冒泡排序
//外层控制轮次
for (int i = 0; i < arr.length - 1; i++) {
//内层控制每轮两两比较几次
forint j = 0; j < arr.length - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}

//选择排序
//代码外层需要循环 arr.length - 1 次
for(int i = 0; i < arr.length - 1; i++) {
int index = i;
for(int j = i; j < arr.length; j++) {
if ( arr[index] < arr[j]) {
index = j;
}
}
if (index != i) {
int temp = arr[index];
arr[index] = arr[i];
arr[i] = temp;
}
}