1. 程式人生 > >Java基礎知識04 —— switch,陣列,二維i陣列,隨機點名

Java基礎知識04 —— switch,陣列,二維i陣列,隨機點名

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,不能寫在輸出語句中。