switch循環(huán)語句 數(shù)組 二維數(shù)組 JVM內(nèi)存劃分

01switch語句解構(gòu)

* A:switch語句解構(gòu)
    * a:switch只能針對某個(gè)表達(dá)式的值作出判斷,從而決定程序執(zhí)行哪一段代碼。

    * b:格式如下:
          swtich(表達(dá)式){
              case 常量1 :
                要執(zhí)行的語句;
              break;
              
              case 常量2 :
                要執(zhí)行的語句;
              break;
              
              case 常量3 :
                要執(zhí)行的語句;
              break;
              
              default:
                要執(zhí)行的語句;
              break;
          }
    * c: 執(zhí)行流程:  表達(dá)式,和case后面的常量進(jìn)行比較和哪個(gè)case后的常量相同,就執(zhí)行哪個(gè)case后面的程序,遇到break,就全結(jié)束
  
    * d: 關(guān)鍵字: switch case default break
    
    * e:舉例
        如果等于1,則輸出星期一
        如果等于2,則輸出星期二
        如果等于3,則輸出星期三
        如果等于4,則輸出星期四
        如果等于5,則輸出星期五
        如果等于6,則輸出星期六
        如果等于7,則輸出星期天

02switch語句的星期判斷

* A: switch語句的星期判斷
    * a: 明確需求
        需求:初始化int類型變量(1-7)代表星期幾,使用switch語句進(jìn)行判斷,并打印出該整數(shù)對應(yīng)的星期.
                            
    * b: 代碼實(shí)現(xiàn)
         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("輸入的數(shù)字不正確...");
                    break;
                }
            }
        }

03switch語句接受的數(shù)據(jù)類型

* A: switch語句接受的數(shù)據(jù)類型
    * a:注意事項(xiàng)
        switch語句中的表達(dá)式的數(shù)據(jù)類型,是有要求的
        JDK1.0 - 1.4  數(shù)據(jù)類型接受 byte short int char
        JDK1.5   數(shù)據(jù)類型接受 byte short int char enum(枚舉)
        JDK1.7   數(shù)據(jù)類型接受 byte short int char enum(枚舉), String    

04case穿透

* A:case穿透
    * a: 在使用switch語句的過程中,如果多個(gè)case條件后面的執(zhí)行語句是一樣的,則該執(zhí)行語句只需書寫一次即可,這是一種簡寫的方式。
    * b: 例如,要判斷一周中的某一天是否為工作日,同樣使用數(shù)字1~7來表示星期一到星期天,當(dāng)輸入的數(shù)字為1、2、3、4、5時(shí)就視為工作日,否則就視為休息日。

05數(shù)組的概述

* A: 數(shù)組的概述
    * a:數(shù)組的需求
        現(xiàn)在需要統(tǒng)計(jì)某公司員工的工資情況,例如計(jì)算平均工資、最高工資等。假設(shè)該公司有50名員工,用前面所學(xué)的知識完成,
        那么程序首先需要聲明50個(gè)變量來分別記住每位員工的工資,這樣做會(huì)顯得很麻煩.

    * b:數(shù)組的概述
        數(shù)組是指一組數(shù)據(jù)的集合,數(shù)組中的每個(gè)數(shù)據(jù)被稱作元素。在數(shù)組中可以存放任意類型的元素,但同一個(gè)數(shù)組里存放的元素類型必須一致。

06數(shù)組的定義

* A:數(shù)組的定義
* b:格式:
         數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[元素個(gè)數(shù)或數(shù)組長度];

    * c:舉例:
        int[] x = new int[100];
* c:要點(diǎn)說明
    1)數(shù)據(jù)類型: 數(shù)組中存儲元素的數(shù)據(jù)類型
    2) [] 表示數(shù)組的意思
    3) 變量名  自定義標(biāo)識符  
    4) new  創(chuàng)建容器關(guān)鍵字
    5)數(shù)據(jù)類型: 數(shù)組中存儲元素的數(shù)據(jù)類型
    6)[]  表示數(shù)組的意思
    7)元素個(gè)數(shù),就是數(shù)組中,可以存儲多少個(gè)數(shù)據(jù) (恒定, 定長)
      
    數(shù)組是一個(gè)容器: 存儲到數(shù)組中的每個(gè)元素,都有自己的自動(dòng)編號
    自動(dòng)編號,最小值是0, 最大值,長度-1
    自動(dòng)編號專業(yè)名次, 索引(index), 下標(biāo), 角標(biāo)
    訪問數(shù)組存儲的元素,必須依賴于索引, 公式 數(shù)組名[索引]
    
    Java提供一個(gè)屬性,操作索引的
    數(shù)組的一個(gè)屬性,就是數(shù)組的長度, 屬性的名字 length
    使用屬性:  數(shù)組名.length  數(shù)據(jù)類型 int
    
    數(shù)組的最小索引是0, 最大索引數(shù)組.length-1

07JVM內(nèi)存劃分

* A:內(nèi)存劃分
* JVM對自己的內(nèi)存劃分為5個(gè)區(qū)域
    * a: 寄存器:內(nèi)存和CUP之間
    * b: 本地方法棧: JVM調(diào)用了系統(tǒng)中的功能
    * c: 方法和數(shù)據(jù)共享: 運(yùn)行時(shí)期class文件進(jìn)入的地方
    * d: 方法棧:所有的方法運(yùn)行的時(shí)候進(jìn)入內(nèi)存
    * e: 堆:存儲的是容器和對象

08數(shù)組的內(nèi)存

* A: 數(shù)組的內(nèi)存
* int[] x;                  // 聲明一個(gè)int[]類型的變量
*   x = new int[100];       // 創(chuàng)建一個(gè)長度為100的數(shù)組
*   接下來,通過兩張內(nèi)存圖來詳細(xì)地說明數(shù)組在創(chuàng)建過程中內(nèi)存的分配情況。
*   第一行代碼 int[] x; 聲明了一個(gè)變量x,該變量的類型為int[],即一個(gè)int類型的數(shù)組。變量x會(huì)占用一塊內(nèi)存單元,它沒有被分配初始值
*   第二行代碼 x = new int[100]; 創(chuàng)建了一個(gè)數(shù)組,將數(shù)組的地址賦值給變量x。在程序運(yùn)行期間可以使用變量x來引用數(shù)組,這時(shí)內(nèi)存中的狀態(tài)會(huì)發(fā)生變化

09使用索引訪問數(shù)組的元素

* A: 使用索引訪問數(shù)組的元素
    * 組中有100個(gè)元素,初始值都為0。數(shù)組中的每個(gè)元素都有一個(gè)索引(也可稱為角標(biāo)),要想訪問數(shù)組中的元素可以通過“x[0]、x[1]、……、x[98]、x[99]”的形式。
    * 需要注意的是,數(shù)組中最小的索引是0,最大的索引是“數(shù)組的長度-1”

10數(shù)組的length屬性

* A: lenth屬性
    * a 在Java中,為了方便我們獲得數(shù)組的長度,提供了一個(gè)length屬性,在程序中可以通過“數(shù)組名.length”的方式來獲得數(shù)組的長度,即元素的個(gè)數(shù)。
    * b 求數(shù)組的長度
        public class ArrayDemo01 {
            public static void main(String[] args) {
                int[] arr; // 聲明變量
                arr = new int[3]; // 創(chuàng)建數(shù)組對象
                System.out.println("arr[0]=" + arr[0]); // 訪問數(shù)組中的第一個(gè)元素
                System.out.println("arr[1]=" + arr[1]); // 訪問數(shù)組中的第二個(gè)元素
                System.out.println("arr[2]=" + arr[2]); // 訪問數(shù)組中的第三個(gè)元素
                System.out.println("數(shù)組的長度是:" + arr.length); // 打印數(shù)組長度
            }
        }

11為數(shù)組的元素賦值

* A: 為數(shù)組的元素賦值
    * a: 如果在使用數(shù)組時(shí),不想使用這些默認(rèn)初始值,也可以顯式地為這些元素賦值。
    *   賦值過的元素已經(jīng)變?yōu)樾碌臄?shù)值,沒有賦值的元素默認(rèn)初始化的數(shù)值
    * b: 案例
        public class ArrayDemo02 {
            public static void main(String[] args) {
                int[] arr = new int[4]; // 定義可以存儲4個(gè)整數(shù)的數(shù)組
                arr[0] = 1; // 為第1個(gè)元素賦值1
                arr[1] = 2; // 為第2個(gè)元素賦值2
                // 下面的代碼是打印數(shù)組中每個(gè)元素的值
                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數(shù)組的定義_2

* A: 定義數(shù)組格式2
    * a: 數(shù)組初始化
        動(dòng)態(tài)初始化 : 在定義數(shù)組時(shí)只指定數(shù)組的長度,由系統(tǒng)自動(dòng)為元素賦初值的方式稱作動(dòng)態(tài)初始化。
        1、類型[] 數(shù)組名 = new 類型[長度];
        int[] arr = new int[4];
        靜態(tài)初始化: 在初始化數(shù)組時(shí)還有一種方式叫做靜態(tài)初始化,就是在定義數(shù)組的同時(shí)就為數(shù)組的每個(gè)元素賦值。
        2、類型[] 數(shù)組名 = new 類型[]{元素,元素,……};
        int[] arr = new int[]{1,2,3,4};
        3、類型[] 數(shù)組名 = {元素,元素,元素,……};  
        int[] arr = { 1, 2, 3, 4 };

13遍歷數(shù)組

* A:遍歷數(shù)組
    * 在操作數(shù)組時(shí),經(jīng)常需要依次訪問數(shù)組中的每個(gè)元素,這種操作稱作數(shù)組的遍歷
* B:練習(xí)
    public class ArrayDemo04 {
        public static void main(String[] args) {
            int[] arr = { 1, 2, 3, 4, 5 }; // 定義數(shù)組
            // 使用for循環(huán)遍歷數(shù)組的元素
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]); // 通過索引訪問元素
            }
        }
    }
    上述代碼中,定義一個(gè)長度為5的數(shù)組arr,數(shù)組的角標(biāo)為0~4。由于for循環(huán)中定義的變量i的值在循環(huán)過程中為0~4,因此可以作為索引,依次去訪問數(shù)組中的元素,并將元素的值打印出來

14數(shù)組中常見的異常

* A: 數(shù)組操作中,常見的兩個(gè)異常
     數(shù)組的索引越界異常
     空指針異常

* B: 練習(xí)
    public class ArrayDemo_4{
        public static void main(String[] args){
            //數(shù)組的索引越界異常
            //int[] arr = {5,2,1};
            //數(shù)組中3個(gè)元素,索引 0,1,2
            //System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3
            
            //空指針異常
            int[] arr2 = {1,5,8};
            System.out.println(arr2[2]);
            arr2 = null; // arr2 不在保存數(shù)組的地址了
            System.out.println(arr2[2]);//java.lang.NullPointerException
        }
    }

15數(shù)組最值

* A: 數(shù)組獲取最值的原理思想
    * 定義數(shù)組的第一個(gè)元素arr[0]為最大值;循環(huán)arr數(shù)組,判斷如果有比arr[0] 大的就交換,直到arr數(shù)組遍歷完畢,那么arr[0]中就保存了最大的元素

16數(shù)組獲取最值代碼實(shí)現(xiàn)

* A: 代碼實(shí)現(xiàn)
    public class ArrayDemo05 {
        public static void main(String[] args) {
            int[] arr = { 4, 1, 6, 3, 9, 8 };   // 定義一個(gè)數(shù)組
            int max = arr[0];                   // 定義變量max用于記住最大數(shù),首先假設(shè)第一個(gè)元素為最大值
            // 下面通過一個(gè)for循環(huán)遍歷數(shù)組中的元素
            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二維數(shù)組的定義

* A 二維數(shù)組的作用
    * 要統(tǒng)計(jì)一個(gè)學(xué)校各個(gè)班級學(xué)生的考試成績,又該如何實(shí)現(xiàn)呢?
    * 這時(shí)就需要用到多維數(shù)組,多維數(shù)組可以簡單地理解為在數(shù)組中嵌套數(shù)組。
* B 定義格式
    * a 第一種定義格式:
        *  int[][] arr = new int[3][4];
        *  上面的代碼相當(dāng)于定義了一個(gè)3*4的二維數(shù)組,即二維數(shù)組的長度為3,二維數(shù)組中的每個(gè)元素又是一個(gè)長度為4的數(shù)組
    * b 第二種定義格式
        *  int[][] arr = new int[3][];
        *  第二種方式和第一種類似,只是數(shù)組中每個(gè)元素的長度不確定
    * c 第三種定義格式
        *   int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
        *   二維數(shù)組中定義了三個(gè)元素,這三個(gè)元素都是數(shù)組,分別為{1,2}、{3,4,5,6}、{7,8,9}

18二維數(shù)組元素的訪問

 * A: 二維數(shù)組的訪問
 * 案例:
  class ArrayDemo08 {
    public static void main(String[] args){
    
        //定義二維數(shù)組的方式
        int[][] arr = new int[3][4];
        System.out.println( arr );
        System.out.println("二維數(shù)組的長度: " + arr.length);
        //獲取二維數(shù)組的3個(gè)元素
        System.out.println( arr[0] );
        System.out.println( arr[1] );
        System.out.println( arr[2] );
        
        System.out.println("打印第一個(gè)一維數(shù)組的元素值");
        System.out.println( arr[0][0] );
        System.out.println( arr[0][1] );//訪問的為二維數(shù)組中第1個(gè)一維數(shù)組的第2個(gè)元素
        System.out.println( arr[0][2] );
        System.out.println( arr[0][3] );
        
        System.out.println("打印第二個(gè)一維數(shù)組的元素值");
        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("打印第三個(gè)一維數(shù)組的元素值");
        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二維數(shù)組內(nèi)存圖

 * A: 二維數(shù)組內(nèi)存圖
 * 舉例:int[][] arr = new int[3][2];
 * 外層數(shù)組長在內(nèi)存開辟連續(xù)的3個(gè)大的內(nèi)存空間,每一個(gè)內(nèi)存空間都對應(yīng)的有地址值
 * 每一個(gè)大內(nèi)存空間里又開辟連續(xù)的兩個(gè)小的內(nèi)存空間.

20二維數(shù)組的定義和訪問

 * A: 二維數(shù)組的定義和訪問
     * 格式1: 
     *  int[][] arr = new int[3][]; 不推薦
     * 格式2
     *  int[][] arr = {{1,2,4},{4,7},{0,9,3}};
     *  
 * B: 二維數(shù)組的訪問
     舉例:int[][] arr = {{1,2,4},{5,8,7},{0,9,3}};  
      想要打印數(shù)組中7這個(gè)元素需要先找到大的元素索引{5,7} 索引為2 ,在找7在{5,7}中的索引2
      那么結(jié)果為 arr[2][2]  第一個(gè)[2]代表大數(shù)組中{5,8,7}這個(gè)元素索引
      第二個(gè)[2]代表{5,8,7}中7元素的索引

22二維數(shù)組的遍歷

  * A:二維數(shù)組遍歷
     int[][] arr = {{1,2,4},{4,7},{0,9,3}};
     先使用for循環(huán)遍歷arr這個(gè)二維數(shù)組,得到每一個(gè)元素為arr[i]為一維數(shù)組
     再外層for循環(huán)中嵌套一個(gè)for循環(huán)遍歷每一個(gè)一維數(shù)組arr[i],得到每一元素

  * B:舉例:遍歷二維數(shù)組
    public class ArrayArrayDemo_2{
        public static void main(String[] args){
            int[][] arr = { {1,2,3},{4,5},{6,7,8,9},{0} };
            
            //外循環(huán),遍歷二維數(shù)組
            for(int i = 0 ; i < arr.length ;i++){
                //內(nèi)循環(huán),遍歷每個(gè)一維數(shù)組 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:二維數(shù)組累加求和
   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二維數(shù)組的求和練習(xí)

 * A 例如要統(tǒng)計(jì)一個(gè)公司三個(gè)銷售小組中每個(gè)小組的總銷售額以及整個(gè)公司的銷售額。如下所示
    * 第一小組銷售額為{11, 12}萬元
    * 第二小組銷售額為{21, 22, 23}萬元
    * 第三小組銷售額為{31, 32, 33, 34}萬元。

  * B 代碼實(shí)現(xiàn)
    public class ArrayDemo10 {
        public static void main(String[] args) {
            int[][] arr = new int[3][];             // 定義一個(gè)長度為3的二維數(shù)組
            arr[0] = new int[] { 11, 12 };          // 為數(shù)組的元素賦值
            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++) { // 遍歷數(shù)組元素
                int groupSum = 0; // 定義變量記錄小組銷售總額
            for (int j = 0; j < arr[i].length; j++) { // 遍歷小組內(nèi)每個(gè)人的銷售額
                    groupSum = groupSum + arr[i][j];
            }
                sum = sum + groupSum;           // 累加小組銷售額
                System.out.println("第" + (i + 1) + "小組銷售額為:" + groupSum + " 萬元");
            }
            System.out.println("總銷售額為: " + sum + " 萬元");
        }
    }

24隨機(jī)點(diǎn)名器案例分析

 * A 隨機(jī)點(diǎn)名器案例分析
  
 * B: 需求
     * 隨機(jī)點(diǎn)名器,即在全班同學(xué)中隨機(jī)的打印出一名同學(xué)名字。
  
 * C:分析:
     * 1)定義數(shù)組存數(shù)全班同學(xué)
     * 2)生成隨機(jī)數(shù)范圍0 到 數(shù)組長度-1
     * 3)根據(jù)這個(gè)索引找到數(shù)組中的同學(xué)名稱

25隨機(jī)點(diǎn)名器代碼實(shí)現(xiàn)

 * A: 分析
     隨機(jī)點(diǎn)名器:
     1  存儲姓名
     2. 預(yù)覽所有人的姓名
     3. 隨機(jī)出一個(gè)人的姓名
 * B 代碼實(shí)現(xiàn)
    import java.util.Random;
    public class CallName{
        public static void main(String[] args){
            //存儲姓名,姓名存儲到數(shù)組中
            //數(shù)組存儲姓名,姓名的數(shù)據(jù)類型,String
            String[] names = {"張三","李四","王五","李蕾","韓梅梅","小名","老王","小華","約翰遜","愛麗絲"};
            
            //預(yù)覽: 遍歷數(shù)組,打印所有姓名
            for(int i = 0 ; i < names.length ; i++){
                System.out.println(names[i]);
            }
            System.out.println("=============");
            
            //隨機(jī)出一個(gè)人的名
            //利用隨機(jī)數(shù),生成一個(gè)整數(shù),作為索引,到數(shù)組中找到對應(yīng)的元素
            Random ran = new Random();
            //隨機(jī)數(shù),范圍必須是0-數(shù)組的最大索引
            int index = ran.nextInt(names.length);//index 就是隨機(jī)數(shù),作為索引
            System.out.println(names[index]);
        }
    }

25隨機(jī)點(diǎn)名器代碼實(shí)現(xiàn)_2

    * A 代碼優(yōu)化:
    import java.util.Random;
    public class CallName{
        public static void main(String[] args){
            String[] names = {"張三","李四","王五","李蕾","韓梅梅","小名","老王","小華","約翰遜","愛麗絲"};
            System.out.println(names[new Random().nextInt(names.length)]);
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,637評論 18 399
  • 一、數(shù)組數(shù)組是一組使用數(shù)字索引的對象,這些對象屬于同一種類型。雖然C#為創(chuàng)建數(shù)組提供了直接的語言支持,但通用類型系...
    CarlDonitz閱讀 789評論 0 1
  • 白熊在五星級的酒店里面做廚師,收入不錯(cuò),工作環(huán)境也很好。白熊很敬業(yè),總是盡力做好自己的工作。 這天,白熊在廚房熬著...
    康萌故事閱讀 297評論 1 1
  • 嗨,貓: 好久不見啦。你最近很忙吧?30歲的你還沒有要孩子,你開心的告訴我單身很快樂,看你眉目飛揚(yáng),我擔(dān)憂的心...
    奮斗青年水淋兒閱讀 367評論 0 0
  • 人生到底有多長呢? 曾經(jīng)看過一個(gè)微博,博主把人生分成了十一份,每一份是10年。 對于我來說,我已經(jīng)快要活到第三份了...
    張凡_Fanny閱讀 872評論 0 0

友情鏈接更多精彩內(nèi)容