一、一维数组
1.1 初始化的三种方法
动态初始化(2种):
//第一种
int a[] = new int[5]; //创建一个名字为a,存放5个int的数组
//第二种 先声明,再new分配
int a[]; //声明数组 ,现在a是null
a = new int[5]; //分配内存空间,可以存放数据
静态初始化:
int a[] = {1,2,4,6,8}; //知道数组有多少元素,具体值为多少
1.2 值传递、引用传递
值传递:基本数据类型赋值方式为值传递,即y的变化不会影响x,如下所示:
int x = 1;
int y = x;
y = 2;
System.out.println(x); // x = 1
System.out.println(y); // y = 2
引用传递:数组默认情况下是引用传递,赋的值是地址,即arr2的变化会影响arr1,如下所示:
int[] arr1 = {1,2,3};
int[] arr2 = arr1;
arr2[0] = 10;
System.out.println(arr1[0]); // arr1[0] = 10
System.out.println(arr2[0]); // arr2[0] = 10
(该图截取自b站韩顺平Java课程)
1.3 冒泡排序
思想:每一轮排序将最大的数放最后,每排完一轮,将比前一轮少比较一次。如第一轮是将最大数放最后,第二轮将第二大的数放倒数第二的位置......以此类推
代码实现:
int arr[] = {20,16,99,25,66,89,60};
for(int i= arr.length;i >= 0;i--){ //一共要进行几轮排序
for(int j = 1;j<i;j++){ //一轮排序中要进行几次排序
if(arr[j-1] >= arr[j]){ //判断,将大数放后面
int temp = arr[j]; //定义一个临时变量用于存放后面的小数字
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
二、二维数组
二维数组内存原理示意图:
二维数组指向了一个地址空间,地址空间里面存放了一维数组的地址,一维数组的地址又指向了一个地址空间,实际上是在一维数组的地址空间里面存放具体的数值。
(该图截取自b站韩顺平Java课程)