文章目录
前言
本篇文章是韩顺平老师课程P156-P189(第六章:数组排序和查找)重点内容的详细总结。
- 数组(语法、赋值机制、反转、扩容)
- 排序(冒泡)
- 查找
- 二维数组(杨辉三角)
一、数组
1. 基础语法
1)介绍
- 数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。
- 即:数组就是一组数据。
2)使用(动态、静态初始化语法与使用)
-
动态初始化1
- 定义:定义格式有两种,任意一种都可以
数据类型 数组名[] = new 数据类型[大小];
数据类型[] 数组名 = new 数据类型[大小];
- 引用:指定数组里要哪一个(下标)
- 定义:定义格式有两种,任意一种都可以
-
动态初始化2
- 先声明数组
数据类型 数组名[]; 数据类型[] 数组名; int a[]; 或者 int[] a;
- 创建数组
数组名 = new 数据类型[大小]; a = new int[10];
- 先声明数组
-
静态初始化
-
语法1
数据类型 数组名[] = {元素值,元素值...};
-
语法2
数据类型 数组名[] = new 数据类型[]{元素值,元素值...};
-
3)注意事项和细节
- 数组是多个相同数据类型的组合,实现对这些数据的统一管理
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用
- 数组创建后,如果没有赋值,有默认值
int - 0; short - 0; byte - 0; float - 0.0; double - 0.0; char - \u0000; boolean - false; String - null - 使用数组的步骤
- 声明数组并开辟空间
- 给数组各个元素赋值
- 使用数组
- 数组的下标是从0开始的
- 数组下标必须在指定的范围内使用,否则报:下标越界异常
比如 int[] arr = new int[5]; 则有效下标为0-4
- 数组属于引用类型,数组型数据是对象(object)
2. 数组赋值机制 (Arry Assign)
- 基本数据类型赋值
- 赋值方式为值拷贝,互相不会影响
- 是赋具体的值
public class Forxxx{
public static void main(String[] args){
//基本数据类型赋值,赋值方式为值拷贝
int n1 = 10;
int n2 = n1;
n2 = 80;
System.out.println(n1); //10 n1没有受n2的影响
System.out.println(n2); //80
}
}
- 数组赋值
- 默认情况下是引用传递,赋的值是地址,也叫地址拷贝
- 数值会相互影响
public class Forxxx{
public static void main(String[] args){
//数组在默认情况下是引用传递,赋的值是地址
//赋值方式为引用赋值
//是一个地址,arr2的变化会影响到arr1
int[] arr1 = {
1, 2, 3};
int[] arr2 = arr1;
arr2[0] = 10;
for(int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]); //此时输出 10,2,3 受影响
}
}
}
- 数组赋值内存图(重难点)
光看图会比较抽象,这里可以看老韩的视频讲解
3. 数组拷贝
直接用一个数组拷贝案例代码进行演示。
public class Forxxx{
public static void main(String[] args){
//将 int[] arr1 = {10, 20, 30}; 拷贝到 arr2 数组,要求数据空间是独立的
int[] arr1 = {
10, 20, 30};
int[] arr2 = new int[arr1.length]; //开辟新的数据空间,大小与arr1相同 -> arr1.length
for(int i = 0