Java學(xué)習(xí)筆記4 - switch語(yǔ)句和數(shù)組

本文主要內(nèi)容:
1、流程控制語(yǔ)句switch
2煮嫌、數(shù)組

01 switch語(yǔ)句

a笛谦、switch只能針對(duì)某個(gè)表達(dá)式的值作出判斷,從而決定程序執(zhí)行哪一段代碼昌阿。
b饥脑、格式:

              swtich(表達(dá)式){
                  case 常量1 :
                    要執(zhí)行的語(yǔ)句;
                  break;
                  
                  case 常量2 :
                    要執(zhí)行的語(yǔ)句;
                  break;
                  
                  case 常量3 :
                    要執(zhí)行的語(yǔ)句;
                  break;
                  
                  default:
                    要執(zhí)行的語(yǔ)句;
                  break;
              }

c、執(zhí)行流程: 表達(dá)式,和case后面的常量進(jìn)行比較和哪個(gè)case后的常量相同,就執(zhí)行哪個(gè)case后面的程序,遇到break,就全結(jié)束

d懦冰、switch語(yǔ)句接受的數(shù)據(jù)類(lèi)型
JDK1.0 - 1.4 數(shù)據(jù)類(lèi)型接受 byte short int char
JDK1.5 數(shù)據(jù)類(lèi)型接受 byte short int char enum(枚舉)
JDK1.7 數(shù)據(jù)類(lèi)型接受 byte short int char enum(枚舉), String

e灶轰、case穿透
在使用switch語(yǔ)句的過(guò)程中,如果多個(gè)case條件后面的執(zhí)行語(yǔ)句是一樣的刷钢,則該執(zhí)行語(yǔ)句只需書(shū)寫(xiě)一次即可笋颤,這是一種簡(jiǎn)寫(xiě)的方式。

02 數(shù)組

a闯捎、數(shù)組是指一組數(shù)據(jù)的集合椰弊,數(shù)組中的每個(gè)數(shù)據(jù)被稱(chēng)作元素。在數(shù)組中可以存放任意類(lèi)型的元素瓤鼻,但同一個(gè)數(shù)組里存放的元素類(lèi)型必須一致。
b贤重、數(shù)組的定義格式:數(shù)據(jù)類(lèi)型[] 數(shù)組名 = new 數(shù)據(jù)類(lèi)型[元素個(gè)數(shù)或數(shù)組長(zhǎng)度];
c茬祷、 數(shù)組的初始化
動(dòng)態(tài)初始化 : 在定義數(shù)組時(shí)只指定數(shù)組的長(zhǎng)度,由系統(tǒng)自動(dòng)為元素賦初值.
1)并蝗、類(lèi)型[] 數(shù)組名 = new 類(lèi)型[長(zhǎng)度];
int[] arr = new int[4];
靜態(tài)初始化: 在定義數(shù)組的同時(shí)就為數(shù)組的每個(gè)元素賦值祭犯。
1)、類(lèi)型[] 數(shù)組名 = new 類(lèi)型[]{元素滚停,元素沃粗,……};
int[] arr = new int[]{1,2,3,4};
2)、類(lèi)型[] 數(shù)組名 = {元素键畴,元素最盅,元素突雪,……};
int[] arr = { 1, 2, 3, 4 };

d、要點(diǎn)說(shuō)明
1)數(shù)據(jù)類(lèi)型: 數(shù)組中存儲(chǔ)元素的數(shù)據(jù)類(lèi)型
2) [] 表示數(shù)組的意思
3) 變量名 自定義標(biāo)識(shí)符
4) new 創(chuàng)建容器關(guān)鍵字
5)數(shù)據(jù)類(lèi)型: 數(shù)組中存儲(chǔ)元素的數(shù)據(jù)類(lèi)型
6)[] 表示數(shù)組的意思
7)元素個(gè)數(shù),就是數(shù)組中,可以存儲(chǔ)多少個(gè)數(shù)據(jù) (恒定, 定長(zhǎng))

    數(shù)組是一個(gè)容器: 存儲(chǔ)到數(shù)組中的每個(gè)元素,都有自己的自動(dòng)編號(hào)
    自動(dòng)編號(hào)(即索引index),最小值是0, 最大值,長(zhǎng)度-1涡贱。即數(shù)組的最小索引是0, 最大索引數(shù)組.length-1
    訪問(wèn)數(shù)組存儲(chǔ)的元素,可用: 數(shù)組名[索引]
    數(shù)組的長(zhǎng)度, 用屬性 length獲取咏删,即:數(shù)組名.length  
03 JVM內(nèi)存劃分

JVM對(duì)自己的內(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激挪、 堆:存儲(chǔ)的是容器和對(duì)象

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

int[] x; // 聲明一個(gè)int[]類(lèi)型的變量
x = new int[100]; // 創(chuàng)建一個(gè)長(zhǎng)度為100的數(shù)組


image.png

第一行代碼 int[] x; 聲明了一個(gè)變量x辰狡,該變量的類(lèi)型為int[],即一個(gè)int類(lèi)型的數(shù)組垄分。變量x會(huì)占用一塊內(nèi)存單元宛篇,它沒(méi)有被分配初始值
第二行代碼 x = new int[100]; 創(chuàng)建了一個(gè)數(shù)組,將數(shù)組的地址賦值給變量x锋喜。在程序運(yùn)行期間可以使用變量x來(lái)引用數(shù)組

05 遍歷數(shù)組

在操作數(shù)組時(shí)些己,經(jīng)常需要依次訪問(wèn)數(shù)組中的每個(gè)元素,即數(shù)組的遍歷
eg:

        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]); // 通過(guò)索引訪問(wèn)元素
                }
            }
        }

分析:上述代碼中嘿般,定義一個(gè)長(zhǎng)度為5的數(shù)組arr段标,數(shù)組的角標(biāo)為04。由于for循環(huán)中定義的變量i的值在循環(huán)過(guò)程中為04炉奴,因此可以作為索引逼庞,依次去訪問(wèn)數(shù)組中的元素,并將元素的值打印出來(lái)

06 數(shù)組中常見(jiàn)的異常

a瞻赶、數(shù)組的索引越界異常java.lang.ArrayIndexOutOfBoundsException
b赛糟、空指針異常java.lang.NullPointerException

        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
            }
        }
07 數(shù)組最值

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

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è)元素為最大值
                // 下面通過(guò)一個(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);   // 打印最大值
        }
}
08 二維數(shù)組

a、定義格式
1)师逸、第一種定義格式:
int[][] arr = new int[3][4];
上面的代碼相當(dāng)于定義了一個(gè)3*4的二維數(shù)組司倚,即二維數(shù)組的長(zhǎng)度為3,二維數(shù)組中的每個(gè)元素又是一個(gè)長(zhǎng)度為4的數(shù)組
2)篓像、第二種定義格式
int[][] arr = new int[3][];
第二種方式和第一種類(lèi)似动知,只是數(shù)組中每個(gè)元素的長(zhǎng)度不確定
3)、 第三種定義格式
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
二維數(shù)組中定義了三個(gè)元素员辩,這三個(gè)元素都是數(shù)組盒粮,分別為{1,2}、{3,4,5,6}奠滑、{7,8,9}

b丹皱、二維數(shù)組元素的訪問(wèn)可用: 數(shù)組名[索引][索引]
c妒穴、二維數(shù)組內(nèi)存圖
舉例:int[][] arr = new int[3][2];
外層數(shù)組長(zhǎng)在內(nèi)存開(kāi)辟連續(xù)的3個(gè)大的內(nèi)存空間,每一個(gè)內(nèi)存空間都對(duì)應(yīng)的有地址值
每一個(gè)大內(nèi)存空間里又開(kāi)辟連續(xù)的兩個(gè)小的內(nèi)存空間.

image.png

d、二維數(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],得到每一元素
swift //外循環(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(); }
e种呐、隨機(jī)點(diǎn)名器案例分析
需求: 隨機(jī)點(diǎn)名器宰翅,即在全班同學(xué)中隨機(jī)的打印出一名同學(xué)名字。

分析:
1)定義數(shù)組存數(shù)全班同學(xué)
2)生成隨機(jī)數(shù)范圍0 到 數(shù)組長(zhǎng)度-1
3)根據(jù)這個(gè)索引找到數(shù)組中的同學(xué)名稱(chēng)

代碼實(shí)現(xiàn):
存儲(chǔ)姓名
預(yù)覽所有人的姓名
隨機(jī)出一個(gè)人的姓名

       import java.util.Random;
       public class CallName{
           public static void main(String[] args){
               String[] names = {"張三","李四","王五","李蕾","韓梅梅","小名","老王","小華","約翰遜","愛(ài)麗絲"};
               System.out.println(names[new Random().nextInt(names.length)]);
           }
       }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末爽室,一起剝皮案震驚了整個(gè)濱河市汁讼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阔墩,老刑警劉巖嘿架,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異啸箫,居然都是意外死亡耸彪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)忘苛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蝉娜,“玉大人,你說(shuō)我怎么就攤上這事扎唾≌俅ǎ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵胸遇,是天一觀的道長(zhǎng)荧呐。 經(jīng)常有香客問(wèn)我,道長(zhǎng)纸镊,這世上最難降的妖魔是什么倍阐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮逗威,結(jié)果婚禮上峰搪,老公的妹妹穿的比我還像新娘。我一直安慰自己凯旭,他們只是感情好罢艾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著尽纽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪童漩。 梳的紋絲不亂的頭發(fā)上弄贿,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音矫膨,去河邊找鬼差凹。 笑死期奔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的危尿。 我是一名探鬼主播呐萌,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谊娇!你這毒婦竟也來(lái)了肺孤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤济欢,失蹤者是張志新(化名)和其女友劉穎赠堵,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體法褥,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茫叭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了半等。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揍愁。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖杀饵,靈堂內(nèi)的尸體忽然破棺而出莽囤,到底是詐尸還是另有隱情,我是刑警寧澤凹髓,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布烁登,位于F島的核電站,受9級(jí)特大地震影響蔚舀,放射性物質(zhì)發(fā)生泄漏饵沧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一赌躺、第九天 我趴在偏房一處隱蔽的房頂上張望狼牺。 院中可真熱鬧,春花似錦礼患、人聲如沸是钥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悄泥。三九已至,卻和暖如春肤粱,著一層夾襖步出監(jiān)牢的瞬間弹囚,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工领曼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸥鹉,地道東北人蛮穿。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像毁渗,于是被迫代替她去往敵國(guó)和親践磅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 第四天 數(shù)組【悟空教程】 第04天 Java基礎(chǔ) 第1章數(shù)組 1.1數(shù)組概念 軟件的基本功能是處理數(shù)據(jù)灸异,而在處理數(shù)...
    Java幫幫閱讀 1,587評(píng)論 0 9
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法府适,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法绎狭,繼承相關(guān)的語(yǔ)法细溅,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,596評(píng)論 18 399
  • 有些事情儡嘶,只有把它寫(xiě)出來(lái)喇聊,才覺(jué)得它是真實(shí)存在過(guò)的,真實(shí)發(fā)生過(guò)的蹦狂。很久以前看過(guò)一部很火的電視劇誓篱,講述的是一個(gè)算是大齡...
    21歲的知了閱讀 420評(píng)論 0 0
  • CountDownLatch 閉鎖可以使一個(gè)或多個(gè)線程等待一組事件的發(fā)生,內(nèi)部的計(jì)數(shù)器記錄了事件的數(shù)量凯楔。兩個(gè)主要的...
    Cafebaby閱讀 896評(píng)論 0 2
  • 思念在心口發(fā)酵,明明才剛剛分開(kāi)虐骑,怎么還會(huì)如此想念准验?千方百計(jì)的想讓自己忙碌起來(lái),我想我要把所有的時(shí)間都用來(lái)忘記廷没,可是...
    我是吃貨我開(kāi)心閱讀 164評(píng)論 0 1