# 8/18 K速記 * 變數初始值 或設定為null 在java中 實際值為0 * 參考變數(arr[0]) 初始為null * 部分(arr)會顯示為 型態+記憶體位置 ```java= Scanner sc = new Scanner(System.in); //在heap配置了Scanner,位址存於stack內的sc內 Scanner[] arr = new Scanner[5]; //在heap配置 5個Scanner的類別用來存scanner的位置 arr[0] = sc; //將位於stack的sc的值,儲存到位於heap內的arr[0]的位置 ``` * 二維陣列 * 第一階在stack 存位址,實際陣列位於heap * 位於heap的陣列,儲存第二維的位置,資料位於另外的heap位址 ```java= int[][] arr = new int[3][3]; arr[0]=arr[1]; //將arr[1]內存的"位址",儲存到arr[0]內 arr[0][0] = 1; //此時 arr[1][0] 是同一個記憶體位置內存值 arr[0][1] = 2; //此時 arr[1][1] 是同一個記憶體位置內存值 java可動態調整array長度!! int[][] arr = new int[3][]; for(int i=0;i<3;i++){ arr[i] = new int[i+1]; //創建不同長度的第二階陣列 for(int j=0;j<i+1;j++){ arr[i][j]=j+1; //賦值 } } for(int i=0;i<3;i++){ for(int j=0;j<i+1;j++){ System.out.println(arr[i][j]); //印出 } } ``` 下周要考 記憶體配置圖 畫法 * 陣列數值交換 * 可藉由一階Arr位置交換 ```java= //arr[][] int[] tmp = arr[i]; //宣告tmp 為一階矩陣,位於stack指向arr[i]所儲存二階的位置 arr[i]=arr[i+1]; arr[i+1]=tmp; ``` * list前導 - 陣列放大 ```java= int[] arr = new int[2]; int count =0; do{ if(arr.length == count){ int[] tmpArr = new int[arr.length*2]; //創建兩倍空間的新Array for(int i=0;i<arr.length;i++){ //搬移原本資訊到新的區塊 tmpArr[i] = arr[i]; } arr = tmpArr; //原記憶體 會進入GC(garbege collector) } arr[count++]=sc.nextInt(); } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up