JAVA學習筆記——(四)

來源:互聯網
上載者:User

標籤:代碼   length   資料類型   都對   switch   java學習   數組元素   需要   cas   

今日內容介紹
1、流程式控制制語句switch
2、數組
3、隨機點名器案例

01switch語句解構
* A:switch語句解構*  a:switch只能針對某個運算式的值作出判斷,從而決定程式執行哪一段代碼。   * b:格式如下:           swtich(運算式){              case 常量1 :                要執行的語句;              break;                            case 常量2 :                要執行的語句;              break;                            case 常量3 :                要執行的語句;              break;                            default:                要執行的語句;              break;             }       * c: 執行流程:  運算式,和case後面的常量進行比較和哪個case後的常量相同,就執行哪個case後面的程式,遇到break,就全結束       * d: 關鍵字: switch case default break         * e:舉例           如果等於1,則輸出星期一           如果等於2,則輸出星期二           如果等於3,則輸出星期三           如果等於4,則輸出星期四           如果等於5,則輸出星期五           如果等於6,則輸出星期六           如果等於7,則輸出星期天
02switch語句的星期判斷
* A: switch語句的星期判斷    * a: 明確需求        需求:初始化int類型變數(1-7)代表星期幾,使用switch語句進行判斷,並列印出該整數對應的星期.                                * b: 代碼實現         public class SwitchDemo01 {            public static void main(String[] args) {                int week = 5;                switch (week) {                case 1:                    System.out.println("星期一");                    break;                case 2:                    System.out.println("星期二");                    break;                case 3:                    System.out.println("星期三");                    break;                case 4:                    System.out.println("星期四");                    break;                case 5:                    System.out.println("星期五");                    break;                case 6:                    System.out.println("星期六");                    break;                case 7:                    System.out.println("星期天");                    break;                default:                    System.out.println("輸入的數字不正確...");                    break;                }            }        }
03switch語句接受的資料類型
* A: switch語句接受的資料類型    * a:注意事項        switch語句中的運算式的資料類型,是有要求的        JDK1.0 - 1.4  資料類型接受 byte short int char        JDK1.5   資料類型接受 byte short int char enum(枚舉)        JDK1.7   資料類型接受 byte short int char enum(枚舉), String    
04case穿透
* A:case穿透    * a: 在使用switch語句的過程中,如果多個case條件後面的執行語句是一樣的,則該執行語句只需書寫一次即可,這是一種簡寫的方式。    * b: 例如,要判斷一周中的某一天是否為工作日,同樣使用數字1~7來表示星期一到星期天,當輸入的數字為1、2、3、4、5時就視為工作日,否則就視為休息日。

?

05數組的概述
* A: 數組的概述    * a:數組的需求        現在需要統計某公司員工的工資情況,例如計算平均工資、最高工資等。假設該公司有50名員工,用前面所學的知識完成,        那麼程式首先需要聲明50個變數來分別記住每位員工的工資,這樣做會顯得很麻煩.    * b:數組的概述        數組是指一組資料的集合,數組中的每個資料被稱作元素。在數組中可以存放任意類型的元素,但同一個數組裡存放的元素類型必須一致。
06數組的定義
* A:數組的定義* b:格式:         資料類型[] 數組名 = new 資料類型[元素個數或數組長度];    * c:舉例:        int[] x = new int[100];* c:要點說明    1)資料類型: 數組中儲存元素的資料類型    2) [] 表示數組的意思    3) 變數名  自訂標識符      4) new  建立容器關鍵字    5)資料類型: 數組中儲存元素的資料類型    6)[]  表示數組的意思    7)元素個數,就是數組中,可以儲存多少個資料 (恒定, 定長)          數組是一個容器: 儲存到數組中的每個元素,都有自己的自動編號    自動編號,最小值是0, 最大值,長度-1    自動編號專業名次, 索引(index), 下標, 角標    訪問數組儲存的元素,必須依賴於索引, 公式 數組名[索引]        Java提供一個屬性,操作索引的    數組的一個屬性,就是數組的長度, 屬性的名字 length    使用屬性:  數組名.length  資料類型 int        數組的最小索引是0, 最大索引數組.length-1
07JVM記憶體劃分
* A:記憶體劃分* JVM對自己的記憶體劃分為5個地區    * a: 寄存器:記憶體和CUP之間    * b: 本地方法棧: JVM調用了系統中的功能    * c: 方法和資料共用: 運行時期class檔案進入的地方    * d: 方法棧:所有的方法啟動並執行時候進入記憶體    * e: 堆:儲存的是容器和對象
08數組的記憶體
* A: 數組的記憶體* int[] x;                  // 聲明一個int[]類型的變數*   x = new int[100];       // 建立一個長度為100的數組*   接下來,通過兩張記憶體配置圖來詳細地說明數組在建立過程中記憶體的分配情況。*   第一行代碼 int[] x; 聲明了一個變數x,該變數的類型為int[],即一個int類型的數組。變數x會佔用一塊記憶體單元,它沒有被分配初始值*   第二行代碼 x = new int[100]; 建立了一個數組,將數組的地址賦值給變數x。在程式運行期間可以使用變數x來引用數組,這時記憶體中的狀態會發生變化

?

09使用索引訪問數組的元素
* A: 使用索引訪問數組的元素    * 組中有100個元素,初始值都為0。數組中的每個元素都有一個索引(也可稱為角標),要想訪問數組中的元素可以通過“x[0]、x[1]、……、x[98]、x[99]”的形式。    * 需要注意的是,數組中最小的索引是0,最大的索引是“數組的長度-1”
10數組的length屬性
* A: lenth屬性    * a 在Java中,為了方便我們獲得數組的長度,提供了一個length屬性,在程式中可以通過“數組名.length”的方式來獲得數組的長度,即元素的個數。    * b 求數組的長度        public class ArrayDemo01 {            public static void main(String[] args) {                int[] arr; // 聲明變數                arr = new int[3]; // 建立數組對象                System.out.println("arr[0]=" + arr[0]); // 訪問數組中的第一個元素                System.out.println("arr[1]=" + arr[1]); // 訪問數組中的第二個元素                System.out.println("arr[2]=" + arr[2]); // 訪問數組中的第三個元素                System.out.println("數組的長度是:" + arr.length); // 列印數組長度            }        }
11為數組的元素賦值
* A: 為數組的元素賦值    * a: 如果在使用數組時,不想使用這些預設初始值,也可以顯式地為這些元素賦值。    *   賦值過的元素已經變為新的數值,沒有賦值的元素預設初始化的數值    * b: 案例        public class ArrayDemo02 {            public static void main(String[] args) {                int[] arr = new int[4]; // 定義可以儲存4個整數的數組                arr[0] = 1; // 為第1個元素賦值1                arr[1] = 2; // 為第2個元素賦值2                // 下面的代碼是列印數組中每個元素的值                System.out.println("arr[0]=" + arr[0]);                System.out.println("arr[1]=" + arr[1]);                System.out.println("arr[2]=" + arr[2]);                System.out.println("arr[3]=" + arr[3]);            }        }
12數組的定義_2
* A: 定義數組格式2    * a: 數組初始化        動態初始化 : 在定義數組時只指定數組的長度,由系統自動為元素賦初值的方式稱作動態初始化。        1、類型[] 數組名 = new 類型[長度];        int[] arr = new int[4];        靜態初始化: 在初始化數組時還有一種方式叫做靜態初始化,就是在定義數組的同時就為數組的每個元素賦值。        2、類型[] 數組名 = new 類型[]{元素,元素,……};        int[] arr = new int[]{1,2,3,4};        3、類型[] 數組名 = {元素,元素,元素,……};          int[] arr = { 1, 2, 3, 4 };

?

13遍曆數組
* A:遍曆數組    * 在運算元組時,經常需要依次訪問數組中的每個元素,這種操作稱作數組的遍曆* B:練習    public class ArrayDemo04 {        public static void main(String[] args) {            int[] arr = { 1, 2, 3, 4, 5 }; // 定義數組            // 使用for迴圈遍曆數組的元素            for (int i = 0; i < arr.length; i++) {                System.out.println(arr[i]); // 通過索引訪問元素            }        }    }    上述代碼中,定義一個長度為5的數組arr,數組的角標為0~4。由於for迴圈中定義的變數i的值在迴圈過程中為0~4,因此可以作為索引,依次去訪問數組中的元素,並將元素的值列印出來
14數組中常見的異常
* A: 數組操作中,常見的兩個異常     數組的索引越界異常     null 指標異常* B: 練習    public class ArrayDemo_4{        public static void main(String[] args){            //數組的索引越界異常            //int[] arr = {5,2,1};            //數組中3個元素,索引 0,1,2            //System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3                        //null 指標異常            int[] arr2 = {1,5,8};            System.out.println(arr2[2]);            arr2 = null; // arr2 不在儲存數組的地址了            System.out.println(arr2[2]);//java.lang.NullPointerException        }    }
15數組最值
* A: 數組擷取最值的原理思想    * 定義數組的第一個元素arr[0]為最大值;迴圈arr數組,判斷如果有比arr[0] 大的就交換,直到arr數組遍曆完畢,那麼arr[0]中就儲存了最大的元素

?

16數組擷取最值代碼實現
* A: 代碼實現    public class ArrayDemo05 {        public static void main(String[] args) {            int[] arr = { 4, 1, 6, 3, 9, 8 };   // 定義一個數組            int max = arr[0];                   // 定義變數max用於記住最大數,首先假設第一個元素為最大值            // 下面通過一個for迴圈遍曆數組中的元素            for (int x = 1; x < arr.length; x++) {                if (arr[x] > max) {             // 比較 arr[x]的值是否大於max                    max = arr[x];               // 條件成立,將arr[x]的值賦給max                }            }            System.out.println("max=" + max);   // 列印最大值        }    }
17二維數組的定義
* A 二維數組的作用    * 要統計一個學校各個班級學生的考試成績,又該如何?呢?    * 這時就需要用到多維陣列,多維陣列可以簡單地理解為在數組中嵌套數組。* B 定義格式    * a 第一種定義格式:        *  int[][] arr = new int[3][4];        *  上面的代碼相當於定義了一個3*4的二維數組,即二維數組的長度為3,二維數組中的每個元素又是一個長度為4的數組    * b 第二種定義格式        *  int[][] arr = new int[3][];        *  第二種方式和第一種類似,只是數組中每個元素的長度不確定    * c 第三種定義格式        *   int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};        *   二維數組中定義了三個元素,這三個元素都是數組,分別為{1,2}、{3,4,5,6}、{7,8,9}
18二維數組元素的訪問
 * A: 二維數組的訪問 * 案例:  class ArrayDemo08 {    public static void main(String[] args){            //定義二維數組的方式        int[][] arr = new int[3][4];        System.out.println( arr );        System.out.println("二維數組的長度: " + arr.length);        //擷取二維數組的3個元素        System.out.println( arr[0] );        System.out.println( arr[1] );        System.out.println( arr[2] );                System.out.println("列印第一個一維數組的元素值");        System.out.println( arr[0][0] );        System.out.println( arr[0][1] );//訪問的為二維數組中第1個一維數組的第2個元素        System.out.println( arr[0][2] );        System.out.println( arr[0][3] );                System.out.println("列印第二個一維數組的元素值");        System.out.println( arr[1][0] );        System.out.println( arr[1][1] );        System.out.println( arr[1][2] );        System.out.println( arr[1][3] );                System.out.println("列印第三個一維數組的元素值");        System.out.println( arr[2][0] );        System.out.println( arr[2][1] );        System.out.println( arr[2][2] );        System.out.println( arr[2][3] );    }}
19二維數組記憶體配置圖
 * A: 二維數組記憶體配置圖 * 舉例:int[][] arr = new int[3][2]; * 外層數組長在記憶體開闢連續的3個大的記憶體空間,每一個記憶體空間都對應的有地址值 * 每一個大記憶體空間裡又開闢連續的兩個小的記憶體空間.
20二維數組的定義和訪問
 * A: 二維數組的定義和訪問     * 格式1:      *  int[][] arr = new int[3][]; 不推薦     * 格式2     *  int[][] arr = {{1,2,4},{4,7},{0,9,3}};     *   * B: 二維數組的訪問     舉例:int[][] arr = {{1,2,4},{5,8,7},{0,9,3}};        想要列印數組中7這個元素需要先找到大的元素索引{5,7} 索引為2 ,在找7在{5,7}中的索引2      那麼結果為 arr[2][2]  第一個[2]代表大數組中{5,8,7}這個元素索引      第二個[2]代表{5,8,7}中7元素的索引
22二維數組的遍曆
  * A:二維數組遍曆     int[][] arr = {{1,2,4},{4,7},{0,9,3}};     先使用for迴圈遍曆arr這個二維數組,得到每一個元素為arr[i]為一維數組     再外層for迴圈中嵌套一個for迴圈遍曆每一個一維數組arr[i],得到每一元素  * B:舉例:遍曆二維數組    public class ArrayArrayDemo_2{        public static void main(String[] args){            int[][] arr = { {1,2,3},{4,5},{6,7,8,9},{0} };                        //外迴圈,遍曆二維數組            for(int i = 0 ; i < arr.length ;i++){                //內迴圈,遍曆每個一維數組 arr[0] arr[1] arr[i]                for(int j = 0 ; j < arr[i].length; j++){                    System.out.print(arr[i][j]);                }                System.out.println();            }        }      * C:二維數組累加求和   class ArrayDemo09 {        public static void main(String[] args){            int[][] arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };            int sum2 = 0;            for (int i=0; i<arr2.length; i++) {                for (int j=0; j<arr2[i].length; j++) {                     //System.out.println(arr2[i][j])                    sum2 += arr2[i][j];                }            }            System.out.println("sum2= "+ sum2);        }    }
23二維數組的求和練習
 * A 例如要統計一個公司三個銷售小組中每個小組的總銷售額以及整個公司的銷售額。如下所示    * 第一小組銷售額為{11, 12}萬元    * 第二小組銷售額為{21, 22, 23}萬元    * 第三小組銷售額為{31, 32, 33, 34}萬元。  * B 代碼實現    public class ArrayDemo10 {        public static void main(String[] args) {            int[][] arr = new int[3][];             // 定義一個長度為3的二維數組            arr[0] = new int[] { 11, 12 };          // 為數組的元素賦值            arr[1] = new int[] { 21, 22, 23 };            arr[2] = new int[] { 31, 32, 33, 34 };                  int sum = 0;                            // 定義變數記錄總銷售額            for (int i = 0; i < arr.length; i++) { // 遍曆數組元素                int groupSum = 0; // 定義變數記錄小組銷售總額            for (int j = 0; j < arr[i].length; j++) { // 遍曆小組內每個人的銷售額                    groupSum = groupSum + arr[i][j];            }                sum = sum + groupSum;           // 累加小組銷售額                System.out.println("第" + (i + 1) + "小組銷售額為:" + groupSum + " 萬元");            }            System.out.println("總銷售額為: " + sum + " 萬元");        }    }
24隨機點名器案例分析
 * A 隨機點名器案例分析 * B: 需求     * 隨機點名器,即在全班同學中隨機的列印出一名同學名字。   * C:分析:     * 1)定義數組存數全班同學     * 2)產生隨機數範圍0 到 數組長度-1     * 3)根據這個索引找到數組中的同學名稱
25隨機點名器代碼實現
 * A: 分析     隨機點名器:     1  儲存姓名     2. 預覽所有人的姓名     3. 隨機出一個人的姓名 * B 代碼實現    import java.util.Random;    public class CallName{        public static void main(String[] args){            //儲存姓名,姓名儲存到數組中            //數組儲存姓名,姓名的資料類型,String            String[] names = {"張三","李四","王五","李蕾","韓梅梅","小名","老王","小華","約翰遜","愛麗絲"};                        //預覽: 遍曆數組,列印所有姓名            for(int i = 0 ; i < names.length ; i++){                System.out.println(names[i]);            }            System.out.println("=============");                        //隨機出一個人的名            //利用隨機數,產生一個整數,作為索引,到數組中找到對應的元素            Random ran = new Random();            //隨機數,範圍必須是0-數組的最大索引            int index = ran.nextInt(names.length);//index 就是隨機數,作為索引            System.out.println(names[index]);        }    }
25隨機點名器代碼實現_2
    * A 代碼最佳化:    import java.util.Random;    public class CallName{        public static void main(String[] args){            String[] names = {"張三","李四","王五","李蕾","韓梅梅","小名","老王","小華","約翰遜","愛麗絲"};            System.out.println(names[new Random().nextInt(names.length)]);        }    }

JAVA學習筆記——(四)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.