04-数组
1. 数组是什么
数组是容器,用来存放多个同一类型的数据。
数组是引用数据类型。
2. 数组初始化
2.1. 静态初始化
类型[] 变量名 = new 类型[]{成员值};
类型[] 变量名 = {成员值}; //简写形式
2.2. 动态初始化
动态初始化数组的默认值
类型[] 变量名 = new 类型[长度];

3. 数组的访问和遍历
4. 数组在计算机执行原理
4.1. Java 内存分配介绍
- 方法区(字节码文件加载的地方)
- 栈(方法进入栈内存,然后开始运行,变量也在栈内存)
- 堆(new 出的对象,会申请内存空间使用,并产生地址)
- 本地方法栈
- 寄存器

4.2. 多个数组变量指向同一个数组对象
4.3. 数组变量赋值 null
不再引用、指向任何数组对象
空指针异常。
5. Demo
5.1. 数组的最大值
private static int maxNum(int[] nums) {
if (nums == null) return 0;
if (nums.length == 1) return nums[0];
int max = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] > max) {
max = nums[i];
}
}
return max;
}
5.2. 数组反转
数组元素前后交换
private static void reverseArray(int[] nums) {
if (nums == null || nums.length == 1) return;
for (int front = 0, end = nums.length - 1; front < end; front++, end--) {
swap(nums,front,end);
}
}
private static void swap(int[] nums, int i, int j) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
5.3. 数组顺序打乱
private static void randomArray(int[] nums) {
if (nums == null || nums.length == 1) return;
Random random = new Random();
for (int i = 0; i < nums.length; i++) {
swap(nums, i, random.nextInt(nums.length));
}
}
6. Debug 工具
| 快捷键 | 作用 |
|---|---|
| Ctrl + F2 | 停止main方法 |
| Ctrl + F5 | 重新运行main方法 |
| Ctrl + F8 | 所在行打断点 |
| Shift + F10 / Shift + Ctrl + F10 | 运行代码 |
| Shift + F9 | 调试 |
| F9 | 跳到下个断点 |
| F8 | 下一步 |
| F7 | 跟入方法 |
| Shift + F8 | 跟出方法 |