Java語言程序控制語句.ppt
《Java語言程序控制語句.ppt》由會員分享,可在線閱讀,更多相關(guān)《Java語言程序控制語句.ppt(69頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第3章Java語言程序控制語句 簡單語句和復(fù)合語句標(biāo)準(zhǔn)輸入輸出語句3 1選擇語句3 2循環(huán)語句3 3跳轉(zhuǎn)語句數(shù)組3 4斷言3 5Java程序示例 簡單語句和復(fù)合語句 語句是程序的基本組成單位 1 簡單語句變量說明語句 賦值語句 方法調(diào)用語句 空語句等被稱為簡單語句 在Java語言中 一個簡單語句總是以分號結(jié)尾的 例 inta 1 b 變量說明語句b 2 賦值語句 空語句System out print b 方法調(diào)用語句 2 復(fù)合語句復(fù)合語句 由大括號 括起來的語句 復(fù)合語句的 內(nèi)可放0 n個語句 每條語句都應(yīng)該符合Java語句的語法 例 if a 0 z a a b b z Java的輸入和輸出使用方法調(diào)用語句 計算機(jī)支持多種輸入和輸出設(shè)備 例如 鼠標(biāo) 鍵盤 掃描儀等是輸入設(shè)備 顯示器 打印機(jī)等是輸出設(shè)備 標(biāo)準(zhǔn)I O操作是指通過標(biāo)準(zhǔn)輸入 輸出設(shè)備進(jìn)行的輸入和輸出操作 一般用鍵盤作為標(biāo)準(zhǔn)的輸入設(shè)備 顯示器則是標(biāo)準(zhǔn)的輸出設(shè)備 在Java中 通過System in和System out對象分別與鍵盤和顯示器發(fā)生聯(lián)系而完成程序信息的輸入和輸出 標(biāo)準(zhǔn)輸入輸出語句 I O System out對象包含著多個向顯示器輸出數(shù)據(jù)的方法 System out對象中包含的最常用的方法是 print 輸出一項(xiàng)數(shù)據(jù)但不換行println 輸出一項(xiàng)數(shù)據(jù)后換行例如 System out print Example System out print InputName 執(zhí)行后將輸出 Example InputName 代碼 System out println Example System out println InputName 執(zhí)行上述代碼將輸出如下結(jié)果 Example InputName 1 標(biāo)準(zhǔn)輸出System out對象 如果要用一個語句輸出多個數(shù)據(jù)項(xiàng) 則數(shù)據(jù)項(xiàng)之間要用 連接 如 Stringstr1 abc intn 11 m 22 System out print str1 ABC 輸出 abcABCSystem out print 1 ABC 輸出 1ABC要將數(shù)值型變量的值分別輸出 則必須在中間加入空格字符串 或空串 如 System out print n m 輸出 33System out print n m 輸出 1122System out print n m 輸出 1122 System in對象用于在程序運(yùn)行時從鍵盤接收輸入 在Java中輸入數(shù)據(jù)時 為了處理輸入數(shù)據(jù)的過程中可能出現(xiàn)的錯誤 需要使用異常處理 以使程序具有 堅固性 異常處理的詳細(xì)介紹在第5章 有兩種異常處理格式實(shí)現(xiàn)輸入 使用try catch語句與read方法 使用throwsIOException與read方法下面是從鍵盤讀一個字符 一個字符串或一個整數(shù)的程序示例 當(dāng)程序中需要實(shí)現(xiàn)鍵盤輸入功能時可以參考這些例子 2 標(biāo)準(zhǔn)輸入System in對象 importjava io 引入java io中的類 輸入輸出類 因程序中要 用到輸入輸出類的read 方法 表示引入該包中下面所有用到的類publicclassReadChar publicstaticvoidmain Stringargs throwsIOException 主方法拋出異常 charch char System in read 調(diào)用read方法 讀一個 字節(jié)數(shù)據(jù) 一個字符的ASCII碼值 存于ch中System out print ch 例 從鍵盤讀一個字符 使用throwsIOException與read方法 例 從鍵盤讀一數(shù)字串并轉(zhuǎn)化為整數(shù) importjava io classReadStringOrInt publicstaticvoidmain Stringargs throwsIOException bytebuf newbyte 20 20個字節(jié)的數(shù)組用于存字符串Stringstr intanInt System in read buf 從鍵盤讀一個數(shù)字串保存于buf中str newString buf buf轉(zhuǎn)換成String對象str ASCII字符串轉(zhuǎn)換成Unicode碼串 anInt Integer parseInt str trim 數(shù)字串轉(zhuǎn)換成整數(shù)System out print anInt 要將數(shù)字串轉(zhuǎn)換成實(shí)數(shù) 則 floatf Float parseFloat str trim 轉(zhuǎn)成單精度數(shù)doubled Double parseDouble str trim 轉(zhuǎn)成雙精度數(shù) 一般而言 Java程序中的語句是順序執(zhí)行的 也就是說 按照程序中語句出現(xiàn)的次序從第一條開始依次執(zhí)行到最后一條 如果需要根據(jù)某個條件來決定下面該進(jìn)行什么操作 或是某些事情應(yīng)根據(jù)需要不斷重復(fù)地去做 這時就需要用到流程控制語句來控制程序中語句的執(zhí)行順序 3 1選擇語句 3 1 1if語句3 1 2switch語句 簡單if語句的執(zhí)行流程如下圖所示 if else語句根據(jù)判定條件的真假來執(zhí)行兩種操作中的一種 1 簡單形式 語法形式 if 布爾表達(dá)式 語句注意 if語句中的條件必須是布爾表達(dá)式 這點(diǎn)與C 是不同的 C 中可以是一般的算術(shù)表達(dá)式 語句可以是復(fù)合語句 例 if min b min b 3 1 1if語句 條件 布爾表達(dá)式 語句 if的后繼語句 false true 簡單if語句的執(zhí)行流程圖 語法形式 if 布爾表達(dá)式 語句1else語句2注意 條件必須是布爾表達(dá)式 語句1 語句2可以是復(fù)合語句 例 if a b min a elsemin b 帶else部分的if語句的執(zhí)行流程如下圖所示 條件 2 完全形式 布爾表達(dá)式 if的后繼 false true 有else部分的if語句的執(zhí)行流程 語句1 語句2 if語句中內(nèi)嵌的語句又是if語句的情況稱為if語句的嵌套 如 if 布爾表達(dá)式1 語句1elseif 布爾表達(dá)式2 語句2 elseif 布爾表達(dá)式m 語句melse語句n 3 if語句的嵌套 程序從上往下依次判斷布爾表達(dá)式的條件 一旦某個條件滿足 即布爾表達(dá)式的值為true 就執(zhí)行相關(guān)的語句 然后就不再判斷其余的條件 直接轉(zhuǎn)到if語句的后續(xù)語句去執(zhí)行 Java規(guī)定 else總是與離它前面最近的if配對 如果需要 可以通過使用花括號 來改變配對關(guān)系 如 1 if x 1 2 if x 1 if y 1 if y 1 aa 1 aa 1 elseaa 2 elseaa 2 1 此處的else與if y 1 相配 2 此處的else與if x 1 相配 例 求一元二次方程 ax2 bx c 0 的根 publicclassroots publicstaticvoidmain Stringargs inta b c check floatx1 x2 a 1 b 2 c 1 check b b 4 a c if check 0 x1 b 2 a x2 x1 System out println x1 x1 System out println x2 x2 elseif check 0 x1 b float Math sqrt check 2 a x2 b float Math sqrt check 2 a System out println x1 x1 System out println x2 x2 else 請自己填寫 練習(xí) 編寫一程序 運(yùn)行后從鍵盤輸入二個整數(shù) 輸出其中的最小數(shù) 課堂練習(xí) 求最小數(shù) importjava io publicclassMin publicstaticvoidmain Stringargs throwsIOException bytebuf newbyte 20 Stringstr inta b min System out println 請輸入二個整數(shù) System in read buf 從鍵盤讀一數(shù)字串存于buf中str newString buf buf轉(zhuǎn)換成字符串a(chǎn) Integer parseInt str trim 數(shù)字串轉(zhuǎn)換成整數(shù)System in read buf str newString buf b Integer parseInt str trim min a if min b min b System out println 最小數(shù)是 min 3 1 2switch語句 switch語句根據(jù)測試表達(dá)式的結(jié)果來執(zhí)行多個可能操作中的一個 它的語法形式如下 switch語句的流程如下所示 switch 測試表達(dá)式 case常量1 語句塊1 break case常量2 語句塊2 break case常量n 語句塊n break default 語句塊n 1 測試表達(dá)式 語句塊1 break 語句塊2 break break 語句塊n 語句塊n 1 后繼語句 常量2 default switch語句的流程圖 常量1 常量n switch語句中的每個 case常量 稱為一個case子句 代表一個case分支的入口 switch語句的注意點(diǎn)如下 1 測試表達(dá)式必須是byte char short int類型的表達(dá)式 而不能使用浮點(diǎn)類型或long類型 也不能為一個字符串 2 switch語句將測試表達(dá)式的值依次與每個case子句中的常量值相比較 如果匹配成功 則執(zhí)行該case子句中常量值后的語句 直到遇到break語句為止 3 case子句中常量的類型必須與測試表達(dá)式的類型相容 而且每個case子句中常量的值必須是不同的 常量也可以是常量表達(dá)式 不含變量 方法的表達(dá)式 4 default子句是可選的 當(dāng)測試表達(dá)式的值與任一case子句中的值都不匹配時 就執(zhí)行default后的語句 如果表達(dá)式的值與任一case子句中的值都不匹配且沒有default子句 則程序不執(zhí)行任何操作 而是直接跳出switch語句 進(jìn)入后續(xù)程序段的執(zhí)行 5 break語句用來在執(zhí)行完一個case分支后 使程序跳出switch語句 執(zhí)行switch語句的后續(xù)語句 因?yàn)閏ase子句只是起到一個標(biāo)號的作用 用來查找匹配的入口 然后從此處開始執(zhí)行 對后面的case子句的值不再進(jìn)行比較 而是直接執(zhí)行其后的語句 因此一般情況下 每個case分支后 要用break來終止后面的case分支語句的執(zhí)行 6 case分支中包括多個執(zhí)行語句時 可以不用花括號括起 7 通過if else語句可以實(shí)現(xiàn)switch語句所有的功能 但通常使用switch語句更簡練 且可讀性強(qiáng) 程序的執(zhí)行效率也高 8 if else語句可以基于一個范圍內(nèi)的值或一個條件來進(jìn)行不同的操作 但switch語句中的每個case子句都必須對應(yīng)一個單值 classSwitchDemo publicstaticvoidmain Stringargs intmonth 7 Stringseason switch month case12 case1 case2 season 冬季 break case3 case4 case5 season 春季 break case6 case7 case8 season 夏季 break case9 case10 case11 season 秋季 break default season 錯 System out println month 月是 season ss 例 用switch語句判斷一個月份屬于一年中哪個季節(jié) 春 夏 秋 冬 方法一 循環(huán)語句的作用是反復(fù)執(zhí)行同一段代碼直到滿足結(jié)束條件 許多問題中需要用到循環(huán)控制 例如累加 累乘等 Java循環(huán)語句有while do while和for三種 3 2循環(huán)語句 3 2 1while語句3 2 2do while語句3 2 3for語句循環(huán)嵌套 while語句形式如下 while 布爾表達(dá)式 語句while語句執(zhí)行的過程為 執(zhí)行while語句時 首先判斷布爾表達(dá)式的值 當(dāng)布爾表達(dá)式的值為true 則執(zhí)行循環(huán)體 然后再判斷條件 直到布爾表達(dá)式的值為false 停止執(zhí)行語句 使用while語句應(yīng)注意以下兩點(diǎn) 1 該語句是先判斷后執(zhí)行 若一開始條件就不成立 就不執(zhí)行循環(huán)體 2 在循環(huán)體內(nèi)一定要有改變條件的語句 否則是死循環(huán) while語句的流程圖如下所示 3 2 1while語句 布爾表達(dá)式 循環(huán)體 false true while語句流程圖 classsum publicstaticvoidmain Stringargs intn 100 循環(huán)總數(shù)n 100inti 1 循環(huán)次數(shù) 初值為 floats 0 和s為實(shí)型while i n 循環(huán)條件 循環(huán)總數(shù)100 s s 1 0f i s增加1 i 1 0f表示是float型i 循環(huán)次數(shù)加 System out println s s 例 用while循環(huán)語句計算s 1 1 2 1 3 1 100 Java還提供了另一個與while語句類似的語句 do while語句 do while語句的語法形式如下 do語句while 布爾表達(dá)式 do while語句執(zhí)行的過程為 先執(zhí)行一次循環(huán)體中的語句 然后測試布爾表達(dá)式的值 如果布表達(dá)式的值為真 那就繼續(xù)執(zhí)行循環(huán)體 do while語句將不斷地測試布爾表達(dá)式的值并執(zhí)行循環(huán)體中的內(nèi)容 直到布爾表達(dá)式的值為假為止 do while語句的流程圖如下所示 3 2 2do while語句 布爾表達(dá)式 循環(huán)體 true false Do while語句流程圖 do while語句和while語句的不同之處是 do while語句總是先進(jìn)入循環(huán) 執(zhí)行一次循環(huán)體后才檢測循環(huán)條件 以決定是否繼續(xù)循環(huán) 而while語句是先測試條件 再決定是否進(jìn)入循環(huán) 所以 用do while語句時 循環(huán)體至少執(zhí)行一次 例 用do while循環(huán)語句計算s 1 1 2 1 3 1 4 1 100 classsum publicstaticvoidmain Stringargs inti 1 循環(huán)次數(shù) 初值為 floats 0 和s為實(shí)型do 循環(huán)條件 s s 1 0f i s增加1 i 1 0f表示是float型i 循環(huán)次數(shù)加 while i 100 要循環(huán)100次System out println s s for語句是循環(huán)的另一種表示形式 for語句的語法形式為 for 表達(dá)式1 表達(dá)式2 表達(dá)式3 語句for是for語句的關(guān)鍵字 語句為for語句的循環(huán)體 若有多個語句 需構(gòu)成復(fù)合語句 for語句中循環(huán)控制變量必須是有序類型 常用的有整型 字符型 布爾型 循環(huán)控制變量初值和終值通常是與控制變量類型相一致的一個常量 也可以是表達(dá)式 循環(huán)次數(shù)由初值和終值決定 執(zhí)行過程 1 按表達(dá)式1將初值賦給循環(huán)控制變量 2 按表達(dá)式2判斷循環(huán)是否成立 即判斷控制變量的值 3 2 3for語句 是否越過終值 未越過終值為條件成立 越過終值為條件不成立 若條件不成立 轉(zhuǎn)步驟 6 3 若條件成立 則執(zhí)行循環(huán)體 4 按表達(dá)式3修改控制變量 對于遞增型為原控制變量值的后續(xù) 對于遞減型為原控制變量值的前導(dǎo) 5 返回步驟 2 6 結(jié)束循環(huán) 求解表達(dá)式1 表達(dá)式2 循環(huán)體 求解表達(dá)式3 for語句的下一語句 false true for語句的流程圖 例 求Fibonacci數(shù)列的前40個數(shù)項(xiàng) Fibonacci數(shù)列 1 1 2 3 5 8 13 21 34 從數(shù)列看到 F1 1 n 1 F2 1 n 2 Fn Fn 1 Fn 2 n 3 for語句使用的一些技巧 有時 for語句在表達(dá)式1和表達(dá)式3的位置上需要包含多個表達(dá)式 這時可使用Java提供的逗號運(yùn)算符來實(shí)現(xiàn) 逗號運(yùn)算符是用逗號 分隔多個表達(dá)式 被看作一個表達(dá)式 這樣就可以在只能放一個表達(dá)式的地方放任意多個表達(dá)式 只須用逗號將它們分隔開 如 for i 1 j 10 i j i j 表達(dá)式1 表達(dá)式2及表達(dá)式3都可以為空語句 但分號不能省略 三者均為空的時候 相當(dāng)于一個無限循環(huán) 如 for 注意點(diǎn) 由于Java語句是用分號結(jié)束的 一個容易犯的錯誤是在for語句的圓括號后面加了一個不應(yīng)有的分號 例如 下面的程序是想要計算 1 2 99 在上例中 分號被放在循環(huán)體的前邊 相當(dāng)于for語句的循環(huán)體為空語句 其結(jié)果是for循環(huán)體什么都不處理 此程序的編譯不會出任何錯誤 但當(dāng)它運(yùn)行時并不產(chǎn)生預(yù)期的結(jié)果 運(yùn)行上面這個程序會得到如下輸出結(jié)果 value 100 一般來說 在循環(huán)次數(shù)預(yù)知的情況下 用for語句比較方便 而while語句和do while語句比較適合于循環(huán)次數(shù)不能預(yù)先確定的情況 循環(huán)嵌套 一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu) 稱為循環(huán)的嵌套 內(nèi)嵌的循環(huán)中還可以嵌套循環(huán) 這就是多重循環(huán) 上述三種循環(huán) while循環(huán) do while循環(huán)和for循環(huán) 語句之間可以相互嵌套使用 例 打印下面的數(shù)字圖案 每行打5個數(shù)字 每行各列數(shù)的值等于第一列數(shù)乘自己所在列號 12345246810369121548121620510152025 循環(huán)嵌套 publicclassLoop Loop publicstaticvoidmain Stringargs intI J K I表示行號 J表示列號 K存臨時計算的值for I 1 I 5 I for J 1 J 5 J K I J System out print K System out println 每打5列換行 例 百雞問題 已知公雞5元1只 母雞3元一只 小雞1元3只 要求用100元剛好買100只雞 問有多少種采購方案 分析 設(shè)變量I J K分別代表公雞數(shù) 母雞數(shù)及小雞數(shù) 則應(yīng)滿足下列一些條件 I J K 100 只 I J K 0 5I 3J K 3 100 元 若用100元全部買公雞 最多只能買20只 所以I 20 同樣地母雞最多只能買33只 所以J 33 而小雞數(shù)目就是100 I J 根據(jù)以上分析 可編程如下 例 百雞問題 publicclassLoop Loop publicstaticvoidmain Stringargs intI J K System out println 公雞母雞小雞 for I 0 I 20 I for J 0 J 33 J K 100 I J if 5 I 3 J K 3 0 100 注意 K 3 0 System out println I J K 循環(huán)語句正常結(jié)束是在循環(huán)條件表達(dá)式的值變?yōu)閒alse的時候 但有時即使測試的條件為true 也希望循環(huán)立即終止 這時可以用跳轉(zhuǎn)語句break或continue語句實(shí)現(xiàn) continue語句只能用于循環(huán)語句中 break可用于switch語句中 亦可用于循環(huán)語句中注意 Java中不支持goto語句 3 3跳轉(zhuǎn)語句 3 3 1break語句3 3 2continue語句 break語句的一般語法格式為 break 標(biāo)號 其中 用 括起的標(biāo)號部分是可選的 1 不帶標(biāo)號的情況此時 break語句的功能是終止break所在的循環(huán)語句 轉(zhuǎn)去執(zhí)行其后的第一條語句 對于不帶標(biāo)號的break語句 在執(zhí)行時有兩個特點(diǎn) 1 在有多重循環(huán)時 它只能使循環(huán)從本層的循環(huán)跳出來 2 跳出循環(huán)后轉(zhuǎn)移到本層循環(huán)的下一個語句 3 3 1break語句 publicclassbreakout publicstaticvoidmain Stringargs throwsIOException intI J K charch for I 1 I 1 I 最外層循環(huán)for J 1 J 2 J 第二層循環(huán) for K 1 K 2 K 內(nèi)層循環(huán) ch char System in read if ch c break 結(jié)束內(nèi)層循環(huán)語句System out println 333 if ch b break 結(jié)束第二層循環(huán)語句System out println 222 if ch a break 結(jié)束最外層循環(huán)語句System out println 111 例 不帶標(biāo)號的break語句 2 帶標(biāo)號的情況標(biāo)號就是加在語句前面的一個合法的標(biāo)識符 其后跟一個冒號 如下所示 標(biāo)號 語句標(biāo)號只是起到對語句標(biāo)識的作用 帶標(biāo)號的break語句的功能是使程序結(jié)束標(biāo)號指明的外層循環(huán)語句 執(zhí)行該外層循環(huán)語句的后繼語句 標(biāo)號應(yīng)該定義在 要結(jié)束的 外層循環(huán)語句的開始處 帶標(biāo)號的break語句的一種典型用法就是實(shí)現(xiàn)break語句所在的循環(huán)的外層循環(huán)語句 從內(nèi)部直接跳出來 例如 importjava io classbreakto A publicstaticvoidmain Stringargs throwsIOException inti j charch A 標(biāo)號A 外層循環(huán)for i 1 i 2 i for j 1 j 1 j 內(nèi)層循環(huán) ch char System in read if ch a breakA 結(jié)束A對應(yīng)的循環(huán)語句 外層循環(huán) System out println 222 System out println 111 continue語句只能在循環(huán)語句中使用 它和break語句的區(qū)別是continue語句只結(jié)束所在循環(huán)語句的本次循環(huán) 而不是終止整個循環(huán)語句的執(zhí)行 而break語句則是結(jié)束整個循環(huán)語句的執(zhí)行 continue語句的一般語法格式為 continue 標(biāo)號 其中 用 括起的標(biāo)號部分是可選的 1 不帶標(biāo)號的使用情況此時 continue語句用來結(jié)束所在循環(huán)語句的本次循環(huán) 即跳過循環(huán)體中continue語句后面的語句 回到循環(huán)體的條件測試部分繼續(xù)執(zhí)行 不帶標(biāo)號continue語句和不帶標(biāo)號的break語句類似 只能對所在一層的循環(huán)起作用 3 3 2continue語句 publicclasscontinueto publicstaticvoidmain Stringargs throwsIOException intI J charch for I 1 I 1 I 外層循環(huán)for J 1 J 2 J 內(nèi)層循環(huán) ch char System in read if ch b continue 結(jié)束內(nèi)層循環(huán)的本次循環(huán)System out println 沒有結(jié)束內(nèi)循環(huán) if ch a continue 結(jié)束外層循環(huán)的本次循環(huán)System out println 沒有結(jié)束外循環(huán) 例 不帶標(biāo)號的continue語句 2 帶標(biāo)號的使用情況此時 continue語句跳過標(biāo)號所指的循環(huán)語句所有余下部分語句 回到標(biāo)號所指循環(huán)語句塊的條件測試部分繼續(xù)執(zhí)行 注意標(biāo)號應(yīng)該定義在外層循環(huán)語句的開始處 下面是一個使用帶標(biāo)號的continue語句的例子 importjava io classcontinue A publicstaticvoidmain Stringargs throwsIOException inti j charch A 標(biāo)號A 外層循環(huán)for i 1 i 2 i for j 1 j 1 j 內(nèi)層循環(huán) ch char System in read if ch a continueA 結(jié)束A對應(yīng)的循環(huán)語句的本次循環(huán)System out println 本次內(nèi)循環(huán)正常結(jié)束 System out println 本次外循環(huán)正常結(jié)束 1一維數(shù)組2多維數(shù)組 數(shù)組是相同類型的數(shù)據(jù)元素按順序組成的一種復(fù)合數(shù)據(jù)類型 元素在數(shù)組中的相對位置由下標(biāo)來指明 數(shù)組中的每個元素通過數(shù)組名加下標(biāo)進(jìn)行引用 數(shù)組作為一種特殊的數(shù)據(jù)類型具有以下特點(diǎn) 1 一個數(shù)組中所有的元素應(yīng)該是同一類型 2 數(shù)組中的元素是有順序的 3 數(shù)組中的一個元素通過數(shù)組名和數(shù)組下標(biāo)來確定 數(shù)組 1 一維數(shù)組的說明與構(gòu)造與C 中不同的是 Java中數(shù)組要用new操作符實(shí)例化才可使用 所以建立一個數(shù)組需要兩步 聲明數(shù)組 實(shí)例化格式 類型數(shù)組名 或 類型 數(shù)組名 數(shù)組名 new類型 數(shù)組長度 說明 第一行聲明一個數(shù)組名 并指明數(shù)組類型 可任何類型 和維數(shù) 第二行使用new操作符構(gòu)造數(shù)組并初始化 缺省值 即為數(shù)組元素分配存儲空間 并為每個數(shù)組元素都賦予一個初值 1 一維數(shù)組 上面的第二步實(shí)例化可以暫時不做 到需要時再完成 也可將上面的二步合并為一步 類型數(shù)組名 new類型 數(shù)組長度 例 intlist 聲明一個整型數(shù)組list newint 3 為上面聲明的數(shù)組分配3個整數(shù)元素 的內(nèi)存空間 并使每個元素初值為0合并為一步 intlist newint 3 2 數(shù)組的初始化數(shù)組初始化就是為數(shù)組元素指定初始值 通常在構(gòu)造數(shù)組時 Jave會使每個數(shù)組元素初始化為一個默認(rèn)值 但在許多情況下 并不希望數(shù)組的初值為默認(rèn)值 此時 就需要用賦值語句來對數(shù)組進(jìn)行初始化 數(shù)組的初始化方式有兩種 一 像初始化簡單類型一樣自動初始化數(shù)組 不用new 即在說明數(shù)組的同時進(jìn)行初始化 稱為靜態(tài)初始化 二 僅用new創(chuàng)建數(shù)組 讓它取缺省值 到以后再為元素賦值 稱為動態(tài)初始化 例 inta 1 2 3 4 5 靜態(tài)初始化intlist newint 3 動態(tài)初始化上面的第一個語句聲明并創(chuàng)建了數(shù)組a 并且為數(shù)組每個元素賦初值 結(jié)果為 a 0 1 a 1 2 a 2 3 a 3 4 a 4 5上面的第二個語句僅聲明并創(chuàng)建了數(shù)組a 并未給數(shù)組賦初值 由Jave為數(shù)組元素默認(rèn)初始化 于是得到三個元素并且都有初值 list 0 0 list 1 0 list 2 0注意 中所有數(shù)據(jù)的類型必須與數(shù)組的類型相同 3 數(shù)組元素的使用數(shù)組被實(shí)例化后 就可以在程序中像使用任何變量一樣來使用數(shù)組元素 即可以在任何允許使用變量的地方使用數(shù)組元素 數(shù)組元素的標(biāo)識方式為 數(shù)組名 下標(biāo) 例 a 3 b i c i 5 下標(biāo)的取值范圍是從0開始 一直到數(shù)組的長度減1 對于上面例子中的list數(shù)組來說 它有3個元素 分別為 list 0 list 1 list 2 注意 不存在list 3 注意 1 下標(biāo)只能為byte short int或char類型 不能為long 2 Java在程序編譯時并不對數(shù)組下標(biāo)進(jìn)行越界檢查 但在運(yùn)行時會對數(shù)組下標(biāo)進(jìn)行越界檢查 以保證安全性 Java中的數(shù)組實(shí)際是Array類的一個對象 定義一個數(shù)組實(shí)際就是創(chuàng)建Array類的一個對象 該類中還有一些屬性和方法供數(shù)組使用 如對于每個數(shù)組都有一個屬性 length 它指明數(shù)組的長度 即元素個數(shù) 由程序自動計算 例如 list length指明了數(shù)組list的長度 Java中的數(shù)組還可利用數(shù)組名來互相賦值 但要注意 這種賦值實(shí)際是定義一個別名 即是同一數(shù)組的不同名字的引用 例如 inta 2 4 6 b b a System out println b 1 輸出4b 1 7 System out println a 1 輸出7 4 一維數(shù)組應(yīng)用示例例 編寫一個程序 在其中建立一個有10個整數(shù)的數(shù)組 運(yùn)行后從鍵盤輸入10個整數(shù)放入數(shù)組 然后輸出其中的最大數(shù) importjava io publicclassArray1 publicstaticvoidmain Stringargs throwsIOException inti max a newint 10 bytebuf newbyte 20 Stringstr 程序如下 System out println 請輸入10個數(shù) for i 0 i 9 i 輸入10個數(shù) 以回車分隔 System in read buf str newString buf a i Integer parseInt str trim max a 0 for i 1 i 9 i 找最大數(shù)if max a i max a i System out println 最大數(shù)是 max 與C 中類似 在Java中 當(dāng)一維數(shù)組中的類型又是一個一維數(shù)組時 就構(gòu)成了二維數(shù)組 以此類推 可構(gòu)成更高維的數(shù)組 所以 多維數(shù)組是通過對一維數(shù)組的嵌套聲明來實(shí)現(xiàn)的 多維數(shù)組與一維數(shù)組一樣 需要聲明并實(shí)例化后才可使用 下面主要以二維數(shù)組為例來說明用法 1 二維數(shù)組的說明與創(chuàng)建二維數(shù)組說明的格式為 類型數(shù)組名 或類型 數(shù)組名 例如 intintArray 與一維數(shù)組一樣 此時還沒有為數(shù)組元素分配內(nèi)存空間 還需要用new關(guān)鍵字來創(chuàng)建數(shù)組 然后才可以使用該數(shù)組的每個元素 2 多維數(shù)組 對二維數(shù)組來說 分配內(nèi)存空間有下面幾種方法 直接為每一維分配空間 如 inta newint 2 3 該語句創(chuàng)建了一個二維數(shù)組a 其較高一維含兩個元素 每個元素為由3個整型數(shù)構(gòu)成的一維整型數(shù)組 如下所示 從最高維開始 分別為每一維分配空間 如 intb newint 2 最高維含2個元素 每 個元素為一個整型數(shù)組b 0 newint 3 最高維第一個元素是一個長度 為3的整型數(shù)組b 1 newint 5 最高維第二個元素是一個長度 為5的整型數(shù)組下圖為該數(shù)組的示意圖 注意 在使用運(yùn)算符new來分配內(nèi)存時 對于多維數(shù)組至少要給出最高維的大小 如果在程序中出現(xiàn)inta2 newint 編譯器將要提示如下錯誤 Arraydimensionmissing2 二維數(shù)組元素的初始化二維數(shù)組元素的初始化同一維數(shù)組一樣有兩種方式 1 在說明數(shù)組的同時進(jìn)行初始化 2 僅用new創(chuàng)建數(shù)組 讓它取缺省值 到以后再為元素賦值 稱為動態(tài)初始化 例 inta 1 2 3 4 5 6 該語句聲明了一個有6個元素的二維數(shù)組并初始化為 a 0 0 1a 1 0 2 a 1 1 3a 2 0 4 a 2 1 5 a 2 2 63 二維數(shù)組元素的引用對二維數(shù)組中每個元素 其引用方式為 數(shù)組名 下標(biāo)1 下標(biāo)2 其中下標(biāo)1 下標(biāo)2為非負(fù)的整型常數(shù)或表達(dá)式 如 a 2 3 cc i 2 j 3 i j為整型 等 同樣 每一維的下標(biāo)取值都從0開始 4 二維數(shù)組應(yīng)用示例例 編寫一個程序 計算4行4列整數(shù)矩陣的對角線元素之和 程序如下 publicclassArray2 publicstaticvoidmain Stringargs inti sum 0 inta 5 3 1 2 2 4 6 8 3 5 7 1 6 4 9 2 for i 0 i 3 i sum a i i System out println sum 示例1 輸出加法表 123456789123456789102345678910113456789101112456789101112135678910111213146789101112131415789101112131415168910111213141516179101112131415161718 例 編寫程序輸出加法表 加法表如下 3 5Java程序示例 程序 publicclassAdd publicstaticvoidmain Stringargs inti j System out println 123456789 for i 1 i 9 i System out print i for j 1 j 9 j if i j 9 System out print i j 1位數(shù)后空3格elseSystem out print i j 2位數(shù)后空2格System out println 示例2 整數(shù)排序 例 編寫程序 使整型數(shù)組的元素按升序排列 方法 使用采用選擇排序方法 選擇排序方法思想 與書上稍有些不同 n個元素排序 需要進(jìn)行n 1趟 第1趟找出第1小的元素 與數(shù)組的第1個元素 即a 0 交換 從而最小的元素放到了最前面 第2趟找出第2小的元素 與數(shù)組的第2個元素 即a 1 交換 從而第2小的元素放到了第2位上 第n 1趟找出第n 1小的元素 與數(shù)組的第n 1個元素 即a n 2 交換 從而第n 1小的元素放到了第n 1位上 至此 數(shù)組排序完成 注 書上按降序排列 72 65 42 94 65 28 44 36 74 80 程序 publicclassOrderArray publicstaticvoidmain Stringargs intintArray 42 65 80 74 36 44 28 65 94 72 inti j k temp for i 0 i 8 i k i k存放區(qū)間中最小元素的下標(biāo) 開始時為區(qū)間的第1個下標(biāo)for j i 1 j 9 j 找出區(qū)間最小的元素 下標(biāo)記在k中if intArray j intArray k k j temp intArray i intArray i intArray k intArray k temp for i 0 i 9 i System out println intArray i 1 輸出1到100中的偶數(shù) 一行5個 2 編寫程序 輸入短整數(shù)n 計算 S 1 1 2 1 2 3 1 2 n 3 編寫求一元二次方程的實(shí)根的程序 4 已知兩個正整數(shù)m n 編寫求它們的最大公約數(shù)的程序 提示 用輾轉(zhuǎn)相除法 方法 1 求m除n的余數(shù)r 2 如果r為0 則n為最大公約數(shù) 結(jié)束 否則轉(zhuǎn) 3 3 用n置m 用r置n 回到 1 第3章習(xí)題- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Java 語言 程序控制 語句
鏈接地址:http://m.appdesigncorp.com/p-6375005.html