1. 程式人生 > >【Java 程式設計】陣列初始化的多種方式

【Java 程式設計】陣列初始化的多種方式

文章目錄

1 陣列定義與初始化基本方式

陣列定義的兩種基本方式:

int[][] a1;
int a2[][];

與C、C++不同,Java在定義陣列時並不為陣列元素分配記憶體空間。

記憶體空間在陣列初始化時分配:

int[][] a1 = new int[2][3];
int a2[][] = new int[2][3];
int a3[ ][ ] = {{1,2,3}, {4,5,6}};

Java語言中,陣列是引用型別,二維陣列是陣列的陣列,陣列空間不是連續分配的,所以不要求二維陣列每一維的大小相同。

int[][] a = new int[2][];
a[0] = new int[3];
a[1] = new int[5];

int[2][] a = {{1,2,3}, {1,2,3,4,5}}

2 Array 工具類

Array 類提供了很多動態建立和操作 Java 陣列的靜態方法。

int[][] a = new int[2][3];

// 也可以通過 Array 工具類來建立
int[][] a1 = (int[][])Array.newInstance(int[].class, 2)
c[0] = new int[3];
c[1] = new int[3];

3 Stream 方式

通過 Stream 進行陣列的初始化:

double[] a = DoubleStream.of(1,2,3,4,5).toArray();

// 通過 IntStream 產生斐波那契數列: 1, 2, 3, 5, 8 ....
int[] b = IntStream.generate(
	int i = 0;
	int j = 1;
	@Override
	public int getAsInt(){
		int tmp = i+j;
		i = j;
		j = tmp;
		return j;
	}
).limit(10).toArray();

Stream 能讓人在 Java 程式設計中體會到函數語言程式設計的快感。

4 Arrays

該類中包含了大量與陣列操作有關的方法,如 :

  • sort,
  • search,
  • fill,
  • copy
  • stream

因為 java 8 之後,更推薦使用 Stream,lambda 等函數語言程式設計的方式來處理集合。