1.数组
存放同一种类型数据的集合,在内存里面是开辟一块连续的区域
举例:
int[] array = new int[4]
1.存放的是整数类型的数组
2.数组长度为4
3.只能存放int类型
数组的访问:数组名[下标]
元素类型[] 数组名 = new 元素类型[长度];
int[] array1 = new int[3];
double[] array2 = new double[3];
boolean[] array3 = new boolean[3];
char[] array4 = new char[3];
代码举例:
@Test
public void test1() {
int[] array = new int[4];
array[0] = 33;
array[1] = 2;
array[2] = 45;
array[3] = 19;
int[] array1 = {2, 4, 5, 6, 7, 9};
int[] array2 = new int[]{3, 5, 6, 8, 8};
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " \t ");
}
System.out.println();
for (int i = array.length - 1; i >= 0; i--) {
System.out.print(array[i] + " \t ");
}
}
2.数组下标越界异常
提示:java.lang.Array Index OutOf Bounds Exception: 4
@Test
public void test2() {
int[] array = {3, 5, 7, 9};
for (int i = 0; i <= array.length; i++) {
//java.lang.Array Index OutOf Bounds Exception: 4
//数组下标存在边界异常
System.out.println(array[i]);
}
}
3.求数组中的最大值
@Test
public void test3() {
int[] array = {3, 5, 7, 1, 8, 9};
//初始认为0是最大的
int max = array[0];
//array.fori 简写for (int i = 0; i < array.length; i++)
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
System.out.println("max: " + max);
}
为了防止求最大值的代码使用过多次,自拟调用求最大值的函数
//定义一个getMax的函数
//int代表返回整数
public int getMax(int[] array) {
int max = array[0];
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
return max;
}
@Test
public void test333() {
int[] array = {23, 45, 67, 2, 12};
//方法调用:方法名(参数)
int maxValue = getMax(array);
System.out.println(maxValue);
}
4.数组的遍历
冒泡排序
int[] array = {40, 17, 21, 1};
实现过程:
第一轮:
第一个数40与后面的数依次对比交换,40交换到最后一个位置
17,40,21,1
17,21,40,1
17,21,1,40 ------- 40 交换出来
第二轮:
第一个数17与后面的数依次对比交换,21交换到倒数第二个位置
17,21,1,40
17,1,21,40 ------- 21交换出来
第三轮:
第一个数1与后面的数依次对比交换,17交换到倒数第三个位置
1,17,21,40 ------- 17交换出来
代码实现:
//冒泡排序
@Test
public void terst4() {
int arr[] = {7, 9, 1, 6, 5, 8, 10, 3};
//i=1代表第一轮
for (int i = 1; i <= arr.length - 1; i++) {
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[i];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
//冒泡排序
@Test
public void terst5() {
int array[] = {7, 9, 1, 6, 5, 8, 10, 3};
bubbleSort(array);
//i=1代表第一轮
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
//自拟一个冒泡排序的函数
private void bubbleSort(int[] array) {
for (int i = 1; i <= array.length - 1; i++) {
for (int j = 0; j < array.length - i; j++) {
if (array[j] > array[j + 1]) {
int temp = array[i];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
5.二维数组
代码举例:
二维数组的创建和初始化:
@Test
public void test6() {
int[][] array1 = {{1, 2}, {2, 3}, {3, 4, 5}};
int[][] array = new int[3][];
array[0] = new int[2];
array[1] = new int[2];
array[2] = new int[3];
array[0][0] = 1;
array[0][1] = 2;
array[1][0] = 2;
array[1][1] = 3;
array[2][0] = 3;
array[2][1] = 4;
array[2][2] = 5;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println(array[i][j]);
}
}
}