Java第一階段(4)陣列 11.9
阿新 • • 發佈:2018-12-20
陣列的概念
就是一個容器,裝很多資料
- 陣列的容量(長度)是固定的,無法增加也無法減少
- 陣列中的所有資料的資料型別必須一致
- 在java中被當做物件來使用
- 一維陣列[] 二維陣列[][] 多維…
建立陣列
注意:在建立的時候就要規定這個陣列存的是什麼型別
1. 靜態初始化:先給定資料與長度
- int型別的一維陣列型別: (完整版) int[] array = new int[]{1,2,3,4,5}; (簡約版) int[] array = {1,2,3,4,5};
System.out.print(array) //此時如果輸出 array,輸出的值為 [[email protected]
[[email protected]:陣列在記憶體中的地址值: [I : 一維陣列的int @:分割 1db9742:16進位制
- 陣列中的元素:
- 長度:陣列名.length
- 訪問陣列中的某一個元素:array[ 位置/索引/角標 ] ( 起始都是從0開始 ) 陣列第一個元素 array[ 0 ] 陣列最後一個元素 array[ array.length - 1 ]
- 使用迴圈來獲取陣列中的每一個元素(陣列的遍歷)
for(int a = 0; a < array.length ; a++){
System.out.println(array[a]);
}
2. 動態初始化:先只給定長度,後續自行增加資料
- int[] arr = new int[3] //3代表 建立了一個長度為3的一維陣列
陣列型別 | 預設空值 |
---|---|
int[] | 0 |
char[] | 空格 |
boolean[] | false |
String[] | null |
- 引用資料型別的陣列,動態初始化預設為null---空指標
java中,記憶體區域的劃分
- 暫存器:記憶體運算儲存效率最高(CPU)
- 本地方法區:給本地系統使用
- 方法區:載入類的檔案、載入靜態的引數,常量
- 棧:區域性變數,物件的引用(建立物件時,等號左邊的就是引用)
- 堆:物件的例項(建立物件時,等號右邊的東西/new 出來的東西)
- 區域性變數:寫在方法中的變數
- 全域性變數:寫在方法外,類中的變數
練習
- 建立一個int型別的一維陣列,將裡面的每一個元素 複製 給另一個數組,並且遍歷出來。
package test;
import java.util.Scanner;
public class Array_1 {
public static void main(String[] args) {
int[] array_1 = {1,2,3,4,5};
int[] array_2 = new int[5];
System.out.println("array_2陣列為:");
System.out.print("{");
for(int i = 0;i<array_1.length;i++){
array_2[i]=array_1[i];
System.out.print(array_2[i]+" ");
}
System.out.println("}");
System.out.println();
}
}
- 建立一個int型別的一維陣列,根據鍵盤輸入一個數,將這個數加到這個陣列的末尾,並遍歷出這個新的陣列。
package test;
import java.util.Scanner;
public class Array_2 {
public static void main(String[] args) {
int[] arr_3 = new int[3];
System.out.println("arr_3陣列為:");
System.out.print("{");
for (int i = 0; i < arr_3.length; i++) {
arr_3[i] = i+1;
System.out.print(arr_3[i]+" ");
}
System.out.print("}");
System.out.println();
int[] newArr = new int[4];
Scanner s = new Scanner(System.in);
System.out.println("請輸入一個數字,加到末尾");
int shu = s.nextInt();
for (int i = 0; i < newArr.length-1; i++) {
newArr[i]= arr_3[i];
}
newArr[3] = shu;
System.out.print("{");
for (int i = 0; i < newArr.length; i++) {
System.out.print(newArr[i]+" ");
}
System.out.print("}");
}
}
- 將星期一到星期日放進陣列中,根據鍵盤輸入一個數字,來對應列印星期數。
package test;
import java.util.Scanner;
public class Array_3 {
public static void main(String[] args) {
String[] date = new String[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
Scanner s = new Scanner(System.in);
System.out.println("請輸入1-7之間的數字");
int write = s.nextInt();
String res = date[write-1];
System.out.println("您輸入的是:"+res);
}
}
- 隨機10個(1-100之間)的整數,放進陣列中,將角標為奇數的元素的值翻倍,然後遍歷出來
package test;
import java.util.Random;
public class Array_4 {
public static void main(String[] args) {
int[] math = new int[10];
for (int i = 0; i < math.length; i++) {
Random r = new Random();
int sui = r.nextInt(100+1);
math[i] = sui;
System.out.print(math[i]+" ");
}
System.out.println();
for (int i = 0; i < math.length; i++) {
if((i+1)%2!=0){
math[i]=math[i]*2;
}
System.out.print(math[i]+" ");
}
}
}
- 一維打地鼠
- 初始化char型別的一維陣列 O O O O O 五個洞
- 遊戲迴圈10次
- 隨機角標地鼠隨機出現 O O O X O
- 提示玩家擊打
- 判斷是否打中
- 擊中得2分,未擊中扣1分(亂輸入也視為沒打中)
- 遊戲結束,統計擊中次數,未擊中次數 和最後的得分
package test;
import java.util.Random;
import java.util.Scanner;
public class Game_DiShu {
public static void main(String[] args) {
// 得分
int gold = 0;
// 總得分
int sum = 0;
// 擊中
int win = 0;
// 未擊中
int lose = 0;
// 遊戲迴圈10次
System.out.println("歡迎來到打地鼠遊戲");
System.out.println("--------------");
System.out.println("遊戲正在初始化");
for (int game = 0; game <= 10; game++) {
// 初始化char型別的一維陣列 O O O O O 五個洞
char[] drop = new char[5];
for (int i = 0; i < drop.length; i++) {
drop[i] = '0';
// System.out.print(drop[i] + " ");
}
Random r = new Random();
int sui = r.nextInt(5)+1;
for (int i = 0; i < drop.length; i++) {
if ((sui - 1) == i) {
drop[i] = 'x';
break;
}
}
for (int i = 0; i < drop.length; i++) {
System.out.print(drop[i] + " ");
}
System.out.println();
System.out.println("地鼠出現,請打擊正確的位置");
Scanner s = new Scanner(System.in);
int player = s.nextInt();
if (player == sui) {
System.out.println("恭喜你,擊中了,得兩分");
sum += 2;
win++;
} else {
System.out.println("很抱歉,未擊中,扣1分");
sum--;
lose++;
}
}
System.out.println("遊戲結束");
System.out.println("您總共擊中" + win + "次");
System.out.println("未擊中" + lose + "次");
System.out.println("總得分" + sum);
}
}