Java基礎知識04 —— switch,陣列,二維i陣列,隨機點名
阿新 • • 發佈:2019-01-07
1.switch-case語句格式如下
swtich()變數型別只能是int、short、char、byte和enum型別。
JDK1.0-1.4 資料型別接受 byte short int char
JDK1.5 資料型別接受 byte short int char enum(列舉)
JDK1.7 資料型別接受 byte short int char enum(列舉) String
複製程式碼
switch(變數){
case 變數值1:
//;
break;
case 變數值2:
//...;
break;
...
default:
//...;
break;
}
複製程式碼
swtich()變數型別只能是int、short、char、byte和enum型別。當進行case判斷時,JVM會自動從上到小掃描,尋找匹配的case,可能存在以下情況:
情況一:若未找到,則執行預設的case。
複製程式碼
int i = 5;
switch(i){
case 0:
System.out.println("0");break;
case 1:
System.out.println("1");break;
case 2:
System.out.println("2");break;
default:
System.out.println("default");break;
}
輸出:default
複製程式碼
情況二:當每一個case都不存在break時,JVM並不會順序輸出每一個case對應的返回值,而是繼續匹配,匹配不成功則返回預設case。
複製程式碼
int i = 5;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
default:
System.out.println("default");
}
輸出:default
複製程式碼
情況三:當每一個case都不存在break時,匹配成功後,從當前case開始,依次返回後續所有case的返回值。
複製程式碼
int i = 2;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
default:
System.out.println("default");
}
輸出:2
default
複製程式碼
情況四:若當前匹配成功的case不存在break,則從當前case開始,依次返回後續case的返回值,直到遇到break,跳出判斷。
複製程式碼
int i = 2;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
case 3:
System.out.println("3");break;
default:
System.out.println("default");
}
輸出:2
3
2.switch case穿透
比如:星期1-5輸出 工作日,星期6-7 輸出休息日
int week = 1;
switch(week){
case 1:
case 2://如果和1匹配上,2-5都不匹配了,就叫穿透
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
}
3.陣列命名的幾種方式, 陣列有.length屬性
(1)資料型別[] 變數名 = new 資料型別[儲存元素的個數];
int[] arr = new int[4];
(2) 資料型別[] 變數名 = new 資料型別[]{元素1,元素2,元素3};
注意事項:這種方式,new後買你的中括號中,不允許寫任何內容,寫了就編譯失敗。
int[] arr = new int[]{1,2,3,4};
System.out.println(arr.length);
(3)資料型別[] 變數名 = {元素1,元素2,元素3};//推薦使用,簡單
int[] arr = {1,2,3};//
注意:int[] arr = new int{1,2,3,4,5,6,}; 大括號內多加一個逗號,這種格式是可以編譯通過的,但不代表6後面數字預設為0,長度還是 6,輸出arr[6]會報陣列越界的錯誤。
4.JVM的記憶體劃分。
暫存器:記憶體和CPU之間
本地方法棧:JVM呼叫了系統中的功能 //複製貼上等等
方法和資料共享:執行時期class檔案,進入的地方
方法棧:所有的方法執行的時候,進入的記憶體
堆:儲存的是容器和物件//容器就指陣列,集合之類的
5.陣列建好之後,如果是int型別的,如果沒賦值,預設是0。
eg.
int[] arr = new int[4];
System.out.println(arr[0]);//輸出是0
6.for和while什麼時候使用
for 知道迴圈次數,計數器思想
while 不確定迴圈次數
7.通過陣列越界理解陣列的記憶體
eg.
int[] arr = {5,2,1};
System.out.println(arr[3]); //編譯不報錯,執行報錯,因為編譯時只檢查語法錯誤,因為在記憶體執行時才建立陣列,
(2)陣列的越界異常有兩種情況,一種是正數,eg.arr[3],一種是負數索引arr[-1],負數索引為人為故意寫的。
8.二維陣列
int[][] arr = new int[3][4];
[3] 表示:二維陣列中,有三個一維陣列
[4] 表示:三個一維陣列中,每個陣列的長度是4
eg.int[][] arr = new int[3][4];
System.out.println(arr);//輸出陣列對應的地址
System.out.println(arr[1]);//也是輸出陣列對應的地址,因為表示角標為1的那個一維陣列。
9.二維陣列的幾種方式的寫法
(1)定義了一維陣列,但是未定義長度,,必須要new
int[][] arr = new int[3][];
//必須要new
arr[0] = new int[5];
System.out.println(arr[0][1]);
(2)一般寫法
int[][] arr = { {1,1},{2,3},{4,5,7} };
10 二維陣列遍歷
eg.二維陣列中,儲存4個一維陣列,每個一維陣列的長度不同
遍歷:巢狀for迴圈,外層for迴圈遍歷二維陣列
遍歷過程中,for遍歷一維陣列
int[][] arr= { {1,2,3},{4,5},{6,7},{8} };
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr[i][j]);
}
System.out.println();//作用:將各個陣列分行打印出來
11.方法的定義格式
修飾符 返回值型別 方法的名字 (引數列表。。。){
方法的功能主體
迴圈,判斷,變數,比較,運算
return;
}
}
12 方法的定義位置
類中,方法外。(main方法裡也不準定義方法)
13 return 後面不能有程式碼。
14. 方法定義和使用的注意事項
1.方法不能定義在另一個方法的裡面
2.寫錯方法名字
3.寫錯了引數列表
4.方法返回值是void,方法中可以省略return不寫
return下面不能有程式碼
5.方法返回值型別,和return,後面資料型別必須匹配
6.方法重複定義問題
7.呼叫方法的時候,返回值是void,不能寫在輸出語句中。
swtich()變數型別只能是int、short、char、byte和enum型別。
JDK1.0-1.4 資料型別接受 byte short int char
JDK1.5 資料型別接受 byte short int char enum(列舉)
JDK1.7 資料型別接受 byte short int char enum(列舉) String
複製程式碼
switch(變數){
case 變數值1:
//;
break;
case 變數值2:
//...;
break;
...
default:
//...;
break;
}
複製程式碼
swtich()變數型別只能是int、short、char、byte和enum型別。當進行case判斷時,JVM會自動從上到小掃描,尋找匹配的case,可能存在以下情況:
情況一:若未找到,則執行預設的case。
複製程式碼
int i = 5;
switch(i){
case 0:
System.out.println("0");break;
case 1:
System.out.println("1");break;
case 2:
System.out.println("2");break;
default:
System.out.println("default");break;
}
輸出:default
複製程式碼
情況二:當每一個case都不存在break時,JVM並不會順序輸出每一個case對應的返回值,而是繼續匹配,匹配不成功則返回預設case。
複製程式碼
int i = 5;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
default:
System.out.println("default");
}
輸出:default
複製程式碼
情況三:當每一個case都不存在break時,匹配成功後,從當前case開始,依次返回後續所有case的返回值。
複製程式碼
int i = 2;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
default:
System.out.println("default");
}
輸出:2
default
複製程式碼
情況四:若當前匹配成功的case不存在break,則從當前case開始,依次返回後續case的返回值,直到遇到break,跳出判斷。
複製程式碼
int i = 2;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
case 3:
System.out.println("3");break;
default:
System.out.println("default");
}
輸出:2
3
2.switch case穿透
比如:星期1-5輸出 工作日,星期6-7 輸出休息日
int week = 1;
switch(week){
case 1:
case 2://如果和1匹配上,2-5都不匹配了,就叫穿透
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
}
3.陣列命名的幾種方式, 陣列有.length屬性
(1)資料型別[] 變數名 = new 資料型別[儲存元素的個數];
int[] arr = new int[4];
(2) 資料型別[] 變數名 = new 資料型別[]{元素1,元素2,元素3};
注意事項:這種方式,new後買你的中括號中,不允許寫任何內容,寫了就編譯失敗。
int[] arr = new int[]{1,2,3,4};
System.out.println(arr.length);
(3)資料型別[] 變數名 = {元素1,元素2,元素3};//推薦使用,簡單
int[] arr = {1,2,3};//
注意:int[] arr = new int{1,2,3,4,5,6,}; 大括號內多加一個逗號,這種格式是可以編譯通過的,但不代表6後面數字預設為0,長度還是 6,輸出arr[6]會報陣列越界的錯誤。
4.JVM的記憶體劃分。
暫存器:記憶體和CPU之間
本地方法棧:JVM呼叫了系統中的功能 //複製貼上等等
方法和資料共享:執行時期class檔案,進入的地方
方法棧:所有的方法執行的時候,進入的記憶體
堆:儲存的是容器和物件//容器就指陣列,集合之類的
5.陣列建好之後,如果是int型別的,如果沒賦值,預設是0。
eg.
int[] arr = new int[4];
System.out.println(arr[0]);//輸出是0
6.for和while什麼時候使用
for 知道迴圈次數,計數器思想
while 不確定迴圈次數
7.通過陣列越界理解陣列的記憶體
eg.
int[] arr = {5,2,1};
System.out.println(arr[3]); //編譯不報錯,執行報錯,因為編譯時只檢查語法錯誤,因為在記憶體執行時才建立陣列,
(2)陣列的越界異常有兩種情況,一種是正數,eg.arr[3],一種是負數索引arr[-1],負數索引為人為故意寫的。
8.二維陣列
int[][] arr = new int[3][4];
[3] 表示:二維陣列中,有三個一維陣列
[4] 表示:三個一維陣列中,每個陣列的長度是4
eg.int[][] arr = new int[3][4];
System.out.println(arr);//輸出陣列對應的地址
System.out.println(arr[1]);//也是輸出陣列對應的地址,因為表示角標為1的那個一維陣列。
9.二維陣列的幾種方式的寫法
(1)定義了一維陣列,但是未定義長度,,必須要new
int[][] arr = new int[3][];
//必須要new
arr[0] = new int[5];
System.out.println(arr[0][1]);
(2)一般寫法
int[][] arr = { {1,1},{2,3},{4,5,7} };
10 二維陣列遍歷
eg.二維陣列中,儲存4個一維陣列,每個一維陣列的長度不同
遍歷:巢狀for迴圈,外層for迴圈遍歷二維陣列
遍歷過程中,for遍歷一維陣列
int[][] arr= { {1,2,3},{4,5},{6,7},{8} };
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr[i][j]);
}
System.out.println();//作用:將各個陣列分行打印出來
11.方法的定義格式
修飾符 返回值型別 方法的名字 (引數列表。。。){
方法的功能主體
迴圈,判斷,變數,比較,運算
return;
}
}
12 方法的定義位置
類中,方法外。(main方法裡也不準定義方法)
13 return 後面不能有程式碼。
14. 方法定義和使用的注意事項
1.方法不能定義在另一個方法的裡面
2.寫錯方法名字
3.寫錯了引數列表
4.方法返回值是void,方法中可以省略return不寫
return下面不能有程式碼
5.方法返回值型別,和return,後面資料型別必須匹配
6.方法重複定義問題
7.呼叫方法的時候,返回值是void,不能寫在輸出語句中。