数组 Array

文章目录

    • 数组的声明和创建
    • 数组的遍历
    • 二维数组
    • 数组的选择排序
    • 有序数组的二分查找

在 Java 中,数组也是一种对象。

  • 数组的索引(下标)是从 0 开始的。
  • 数组中元素的数量不能超过数组的容量。
  • 数组中元素的类型相同,这个类型可以是任意类型。

数组的声明和创建

数组的声明:

类型[] 变量名

数组的创建:

new 类型[容量]

数组创建之后,里面的每个元素都有默认值,默认值为类型的默认值。

// 数组
String[] a1;
a1 = new String[3];
a1[0] = "jack";
a1[1] = "rose";
// a1[2] = "lily";

数组的遍历

for (int i = 0; i < a1.length; i++) {
    System.out.println("array:" + a1[i]);
}
System.out.println(a1.length);  // 3,返回的是数组的容量
// 数组的另一种创建方式
String[] a2 = {"aa", "bb"};
// 数组的第二种遍历方式
for (String s : a2) {
    System.out.println("array:" + s);
}

二维数组

String[][] a3 = {{"aa", "bb"}, {"cc"}};  // 不标准的二维数组
// 标准的二维数组,也称之为数据矩阵
String[][] a4 = new String[3][4]; // 3行4列

数组的选择排序

int[] a5 = {4, 3, 8, 1, 7, 3};
for (int i = 0; i < a5.length - 1; i++) {  // 循环体内声明的局部变量,作用域是循环体内部
    int maxIndex = 0;
    for (int j = 1; j < a5.length - i; j++) {
        if (a5[j] > a5[maxIndex]) {
            maxIndex = j;
        }
    }
    // 选择出最大值的索引,然后与每一轮的最后一个元素交换
    int tmp = a5[maxIndex];
    a5[maxIndex] = a5[a5.length - 1 - i];
    a5[a5.length - 1 - i] = tmp;
}
for (int i : a5) {
    System.out.print(i + "\t");
}
System.out.println();

有序数组的二分查找

二分查找:指的是利用二分折半法,从一个有序数组中,找出某一个元素在数组中的索引。

int[] a6 = {1, 2, 4, 5, 6, 7, 9};
int target = 4;
int start = 0;
int end = a6.length - 1;
int middle = 0;
while (start <= end) {
    middle = (start + end) / 2;  // 自动舍去法取整
    if (a6[middle] > target) {
        end = middle - 1;
    } else if (a6[middle] < target) {
        start = middle + 1;
    } else {
        break;
    }
}
System.out.println(target + " 在数组中的索引是 " + middle);
System.out.println(7 / 4);
System.out.println(-5 / 4);

你可能感兴趣的:(#,Java,基础,java,数组)