1. 程式人生 > >第四章 Java陣列的初始化

第四章 Java陣列的初始化

package Com.Alisa.net;

import java.util.Random;

/** 陣列的初始化 */
public class Seping5 {
	
	/** 陣列的建立與格式 */ 
	public void subing() {
		
		/*  int為陣列中元素的型別,java中的陣列元素必須都為一個型別
		 *  []表示它為一個數組,表示式一與表示式二的寫法都正確,不過提倡用表示式一
		 *  python中的list陣列中的元素型別可以不一致,python中numpy型別的陣列中的元素型別必須一致
		 *  OC中的NSArray與java中的陣列相似,元素的型別必須一致
		 */
		
		int[] a1 = {1, 2, 3, 4, 5};		// 表示式一
		int a2[] = {1, 2, 3, 4, 5};		// 表示式二
		
		/**  宣告一個數組,如果初始化時不知道陣列需要開闢的記憶體空間是多大,使用new */
		Random random = new Random();
		int mod = 10;
		int s = Math.abs(random.nextInt()) % mod + 1;
		System.out.println("length=" + s);	// length=6
		int[] arr1 = new int[s];	// 把隨機生成的數值長度傳入,作為陣列初始化時需要的記憶體大小
		System.out.println("array lenght=" + arr1.length);	// array lenght=6
		for (int i = 0; i < arr1.length; i++) {
			System.out.println("arr1[" + i + "] = " + arr1[i]);  // arr1[i] = 0 系統給每個元素賦一個預設值0
		}
		
		/** 多維陣列的初始化 */
		/* 多維陣列的初始化方式的一點思考:
		 * 每個元素的型別依然是一致的,但每個元素對應的陣列的長度可以是不同長度的
		 * 這樣的機制使它不利於批量計算,因為它在記憶體中儲存的方式不是規整的,
		 * 也就不能像python中numpy,那樣可以進行基於記憶體的數學計算
		 * 它也沒有像python一樣可以觀察陣列維度的shape屬性,因此矩陣的計算它並不擅長
		 * */
		int[][] arr2 = {
			{1, 2, 3},
			{4, 5, 6},
			{7, 8, 9, 10},
		};
		System.out.println(arr2);	// 直接列印,列印的可能是一個地址:[[
[email protected]
for (int i = 0; i < arr2.length; i++) { for (int j = 0; j < arr2[i].length; j++) { System.out.println(arr2[i][j]); // 1 ~ 10 } } } }