第四章 Java陣列的初始化
阿新 • • 發佈:2018-12-21
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
}
}
}
}