一、数组(array)
介绍:数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型
即:数(数据)组(一组)就是一组数据
1、数组的创建
如:
//1、 double[] 表示是double类型的数组,数组名是num01
// 2、{3, 4, 6, 8.7, 3.4} 表示数组的值/元素, 依次表示数组的第几个元素(从0开始)
// 3、可用 for 循环遍历
// 4、[] 中括号可以写在数组名后 如:double num[] = {3, 4, 6, 8.7, 3.4};
// 5、可以通过 数组名.length 得到数组的长度
double[] num = {3, 4, 6, 8.7, 3.4};
// 1、我们可以通过 num[下标] 来访问数组的元素
// 2、下标是从 0 开始编号的,第一个元素就是 num[ 0 ] ,第二个元素就是 num[ 1 ],以此类推
// 3、通过for就可以循环的访问数组的元素/值
for(int i = 0; i < 6; i++){
System.out.println("第"+ ( i + 1 ) +"个元素的值=" + num[ i ]);
}
2、数组的使用
(1)使用方式1:

演示:


(2)使用方式2:

演示:

(3)使用方法3:

注:也可以这样
String[] ars = new String[]{"a","b","c"};
注意:

3、数组使用注意事项和细节

4、数组赋值机制(数组的赋值方式是引用赋值)

例:


值传递/值拷贝 和 引用传递 的区别:

5、数组拷贝(内容复制)


此时修改 arr2 对 arr1 不会产生影响

6、数组反转



7、数组的添加


/*
要求:实现动态的给数组添加元素的效果,实现对数组的扩容。
1、原始数组使用静态分配 int[] arr = {1, 2, 3}
2、增加的元素4,直接放在数组的最后 arr = {1, 2, 3, 4}
3、用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n
思路分析:
1、定义初始数组 int[] arr = {1, 2, 3}; //下标为0到2
2、定义一个新的数组 int[] arrNew = new int[arr.length + 1]
3、遍历arr数组,依次将arr的元素拷贝到 arrNew数组
4、将 4 赋给 arrNew[arr.length - 1] = 4; 把4赋给arrNew最后一个元素
5、让 arr 指向 arrNew ; arr = arrNew; 那么原来arr数组就会被销毁
6、创建一个Scanner可以接受用户输入
7、因为用户什么时候退出,不确定,所以使用do-while + break 来控制
*/
Scanner myScanner = new Scanner(System.in);
// 初始化数组
int[] arr = {1, 2, 3};
do {
int[] arrNew = new int[arr.length + 1];
//遍历 arr 数组,依次将arr的元素拷贝到arrNew数组
for (int i = 0; i < arr.length; i++) {
arrNew[i] = arr[i];
}
System.out.println("请输入你所要添加的元素");
int addNum = myScanner.nextInt();
// 把addNum赋给arrNew最后一个元素
arrNew[arrNew.length - 1] = addNum;
// 让arr指向arrNew
arr = arrNew;
//输出arr
System.out.println("=====arr扩容后元素情况=====");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i] + "\t");
}
//询问用户是否继续
System.out.println("是否添加 y/n");
char key = myScanner.next().charAt(0);
//如果输入n,就结束
if (key == 'n') {
break;
}
} while (true);
System.out.println("退出");
二、排序

1、冒泡排序
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐想上冒。
分析:


三、查找
介绍:在java中,常用的有两种查找方式,1、顺序查找 2、二分查找



四、多维数组---二维数组

注意: int[][]

1、二维数组的使用
(1)使用方式1



(2)使用方式2

int arr[][]; // 先声明变量
arr = new int[2][3]; //再开空间
(3)使用方式3

/*
动态创建下面二维数组,并输出
i = 0: 1
i = 1: 2 2
i = 2: 3 3 3
一个有三个一维数组,每个一维数组的元素是不一样的
*/
//创建 二维数组,但是只是确定一维数组的个数,每一个一维数组还没有开空间
int[][] arr = new int[3][];
//遍历arr每个一维数组
for (int i = 0; i < arr.length; i++) {
// 给每个一维数组开空间 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;
}
}
// 遍历arr输出
for (int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++){
System.out.print(arr[i][j] + " ");
}
// 换行
System.out.println();
}
(4)使用方法4

打印杨辉三角:
/*
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
规律:
1、第一行有 1 个元素;第 n 行有 n 个元素
2、每一行的第一个元素和最后一个元素都是1
3、从第三行开始,对于非第一个元素和最后一个元素的元素de值 arr[i][j]
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
*/
int[][] yangHui = new int[10][];
// 遍历yangHui的每个元素
for (int i = 0; i < yangHui.length; i++) {
// 给每个一维数组(行)开空间
yangHui[i] = new int[i + 1];
// 给每个一维数组(行)赋值
// 遍历一维数组,并给一维数组的每个元素赋值
for (int j = 0; j < yangHui[i].length; j++) {
// 每一行的第一个元素和最后一个元素都是1
if (j == 0 || j == yangHui[i].length - 1) {
yangHui[i][j] = 1;
} else {
// 中间的元素
yangHui[i][j] = yangHui[i - 1][j] + yangHui[i - 1][j - 1];
}
}
}
// 输出杨辉三角
for (int i = 0; i < yangHui.length; i++) {
for (int j = 0; j < yangHui[i].length; j++) {
//遍历输出该行
System.out.print(yangHui[i][j] + " ");
}
//换行
System.out.println();
}
2、二维数组使用细节和注意事项

注意:



本文详细介绍了Java中的数组,包括创建、遍历、赋值机制、数组拷贝及反转。接着讲解了排序的基础——冒泡排序,并提及两种查找方法:顺序查找和二分查找。最后讨论了二维数组的使用及其在打印杨辉三角中的应用。
433

被折叠的 条评论
为什么被折叠?



