1、Java 数组
数组用于将多个值存储在单个变量中,而不是为每个值声明单独的变量。
要声明数组,要使用方括号定义变量类型:
String[] langs;
下面声明了一个包含字符串数组的变量。要向其中插入值,我们可以使用数组字面量,就是将值放在以逗号分隔的花括号内,例如:
String[] langs = {"c", "java", "python", "wonhero"};
要创建整数数组,可以编写:
int[] myNum = {10, 20, 30, 40};
2、访问数组中元素
可以通过数组索引来访问数组元素。
该语句访问langs中第一个元素的值:
例如:
String[] langs = {"c", "java", "python", "wonhero"};System.out.println(langs[0]);// 输出 c
注意:数组索引以0
开头:[0]
是第一个元素。 [1]
是第二个元素,依此类推。
3、修改数组中元素
要更改指定元素的值,可以使用数组索引来修改,例如:
例如:
langs[0] = "javascript";
例如:
String[] langs = {"c", "java", "python", "wonhero"};langs[0] = "javascript";System.out.println(langs[0]);
4、数组长度
在Java中,数组是非原始数据类型,这意味着它是具有不同方法的对象,可用于获取有关此对象的信息。例如,要找出一个数组有多少个元素,可以使用length属性:
例如:
String[] langs = {"c", "java", "python", "wonhero"};System.out.println(langs.length);// 输出 4
5、循环遍历数组
可以使用for循环遍历数组元素,并通过使用length
属性来指定循环应运行的次数。
下面示例输出langs
数组中的所有元素:
例如:
String[] langs = {"c", "java", "python", "wonhero"};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", "wonhero"};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等)。 |