Java 数组(Arrays)

数组(Array)是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 这些有序排列的同类数据元素的集合称为数组。本文主要介绍Java 数组

1、Java 数组

数组用于将多个值存储在单个变量中,而不是为每个值声明单独的变量。

要声明数组,要使用方括号定义变量类型:

String[] langs;

下面声明了一个包含字符串数组的变量。要向其中插入值,我们可以使用数组字面量,就是将值放在以逗号分隔的花括号内,例如:

String[] langs = {"c", "java", "python", "cjavapy"};

要创建整数数组,可以编写:

int[] myNum = {10, 20, 30, 40};

2、访问数组中元素

可以通过数组索引来访问数组元素。

该语句访问langs中第一个元素的值:

例如

String[] langs = {"c", "java", "python", "cjavapy"};
System.out.println(langs[0]);
// 输出 c

注意:数组索引以0开头:[0]是第一个元素。 [1]是第二个元素,依此类推。

3、修改数组中元素

要更改指定元素的值,可以使用数组索引来修改,例如:

例如

langs[0] = "javascript";

例如

String[] langs = {"c", "java", "python", "cjavapy"};
langs[0] = "javascript";
System.out.println(langs[0]);

4、数组长度

在Java中,数组是非原始数据类型,这意味着它是具有不同方法的对象,可用于获取有关此对象的信息。例如,要找出一个数组有多少个元素,可以使用length属性:

例如

String[] langs = {"c", "java", "python", "cjavapy"};
System.out.println(langs.length);
// 输出 4

5、循环遍历数组

可以使用for循环遍历数组元素,并通过使用length属性来指定循环应运行的次数。

下面示例输出langs数组中的所有元素:

例如

String[] langs = {"c", "java", "python", "cjavapy"};
for (int i = 0; i < langs.length; i++) {
  System.out.println(langs[i]);
}

6、for-each遍历数组

专用于循环遍历数组中的元素:

语法

for (type variable : arrayname) {
  ...
}

以下示例使用for-each循环输出langs数组中的所有元素:

例如

String[] langs = {"c", "java", "python", "cjavapy"};
for (String i : langs) {
  System.out.println(i);
}

for循环和for-each循环,for-each方法更简单方便,而且不需要计数(使用length属性),并且更具可读性。

7、多维数组

多维数组是包含一个或多个数组的数组。

如果需要创建二维数组,需要将每个数组添加到其各自的大括号内:

例如

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };

myNumbers现在是一个以两个数组为元素的数组。

要访问myNumbers数组的元素,请指定两个索引:一个用于数组,一个用于该数组内的元素。本示例访问myNumbers的第二个数组(索引下标为1)中的第三个元素(索引下标为2):

例如

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
int x = myNumbers[1][2];
System.out.println(x); // 输出 7

也可以在通过嵌套for循环来获取二维数组的元素(需要指向两个索引下标):

例如:

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
for (int i = 0; i < myNumbers.length; ++i) {
  for(int j = 0; j < myNumbers[i].length; ++j) {
    System.out.println(myNumbers[i][j]);
  }  
}

8、Arrays 类

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

具有以下功能:

  • 给数组赋值:通过 fill 方法。
  • 对数组排序:通过 sort 方法,按升序。
  • 比较数组:通过 equals 方法比较数组中元素值是否相等。
  • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

具体说明请查看下表:

序号

方法和说明

1

public static int binarySearch(Object[] a, Object key)

用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。

数组在调用前必须排序好的。如果查找值包含在数组中,

则返回搜索键的索引;否则返回 (-(

插入点

) - 1)。

2

public static boolean equals(long[] a, long[] a2)

如果两个指定的 long 型数组彼此

相等

,则返回 true。如果两个数组包含相同数量的元素,

并且两个数组中的所有相应元素对都是相等的,

则认为这两个数组是相等的。换句话说,

如果两个数组以相同顺序包含相同的元素,

则两个数组是相等的。

同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

3

public static void fill(int[] a, int val)

将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。

同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

4

public static void sort(Object[] a)

对指定对象数组根据其元素的自然顺序进行升序排列。

同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。


推荐阅读
cjavapy编程之路首页