Java 数组

151 阅读3分钟

Java 语言中提供的数组是用来存储固定大小同类型元素。

1、声明数组变量

声明数组的方式有两种,只有声明完数组后,才能开始使用。

// 方式一:
int[] arr;

// 方式二:
int arr[];

2、一维数组

2.1、创建数组

使用 new 关键字来创建数组,在创建数组时,需要声明数组的 size 容量。

// 例:
int arr[] = new int[10];
Object[] objects = new Object[10];
boolean bool[] = new boolean[10];

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arr.length - 1

除了上一种创建方式外,另一种方式是在创建时为其赋值。

// 例:
int arr[] = {1,2,3};

我们通常使用 arr.length 来获取数组的长度。

// 例:
int arr[] = {1,2,3,4};
int len = arr.length; 	// len的值为4

2.2、处理数组

数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 For-Each 循环。在后续的章节会对循环进行详细的讲解。

使用 arr[i] 的方式获取数组中下标为 i 中的元素。

// 例:
int arr[] = {1,2,3,4,5};
for(int i = 0; i < arr.length; i++){
    // 在控制台打印 arr 数组中的数据
    System.out.println(arr[i]);
}

3、二维数组

二维数组可以简单的理解为矩阵

3.1、创建数组

二维数组的创建方式与一维数组基本相同。

// 例:
// 方式一:我们可以只指定行数,而不用指定列数
int[][] arr = new int[10][];

// 方式二:可以同时指定行数和列数
int[][] arrs = new int[10][10];

//但是不能只指定列数,不指定行数,下面的例子编译是不通过的。
int[][] err = new int[][10];

那么该如何获取数组的长度呢?我们需要先获取指定的再获取指定上的元素。

// 例:
int arr[][] = new int[10][11];

int x = arr.length;	  	// x 的值为 10
int y = arr[0].length; 		// y 的值为 11

// 当使用如下方式创建数组时,不能获取列的长度,否则会报错
int[][] arr = new int[10][];

int x = arr.length;		// x 的值为 10
int y = arr[0].length;		// 报错:java.lang.NullPointerException

3.2、处理数组

对于二维数组的遍历,也是采用基本循环或 For-Each 循环的方式。

// 例:
int arr[][] = {{1, 2, 3}, {4, 5, 6}};
for(int i = 0; i < arr.length; i++){
    for(int j = 0; j < arr[i].length; j++){
	// 在控制台打印 arr 数组中的数据
	System.out.println(arr[i][j]);
    }
}

4、Arrays工具类

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

下面列举一些常用的方法:

  • 给数组赋值:通过 fill() 方法。
  • 对数组排序:通过 sort() 方法,按升序。
  • 比较数组:通过 equals() 方法比较数组中元素值是否相等。注意 [1,2,3][2,1,3] 返回 false
  • 数组转换:通过 asList() 将数组转换为 List (你可以在以后的章节里来学习 List)。

4.1、实例

// 声明三个数组
int arr1[] = new int[3]; // [0,0,0]
int arr2[] = {0,0,0}; // [0,0,0]
int arr3[] = new int[3];
int arr4[3] = {0}; // 报错,和 C语言 不一样

// 为数组赋值
Arrays.fill(arr1,1); // [1,1,1]
Arrays.fill(arr2,1); // [1,1,1]
Arrays.fill(arr3,2);

// 判断 arr1 和 arr2 是否相等、arr1 和 arr3 是否相等
System.out.println("数组arr1和数组arr2是否全等:" + Arrays.equals(arr1,arr2));
System.out.println("数组arr1和数组arr3是否全等:" + Arrays.equals(arr1,arr3));

// 输出 arr3 的内容
System.out.print("数组arr3:");
for (int i = 0; i < 3; i++) {
    System.out.print(arr3[i] + " ");
}

Output is:

数组arr1和数组arr2是否全等:true
数组arr1和数组arr3是否全等:false
数组arr3:2 2 2 

转自:

www.lintcode.com/learn/179/4…