Java語言程序控制語句.ppt
《Java語言程序控制語句.ppt》由會員分享,可在線閱讀,更多相關(guān)《Java語言程序控制語句.ppt(69頁珍藏版)》請?jiān)谘b配圖網(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語言中 一個(gè)簡單語句總是以分號結(jié)尾的 例 inta 1 b 變量說明語句b 2 賦值語句 空語句System out print b 方法調(diào)用語句 2 復(fù)合語句復(fù)合語句 由大括號 括起來的語句 復(fù)合語句的 內(nèi)可放0 n個(gè)語句 每條語句都應(yīng)該符合Java語句的語法 例 if a 0 z a a b b z Java的輸入和輸出使用方法調(diào)用語句 計(jì)算機(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對象包含著多個(gè)向顯示器輸出數(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對象 如果要用一個(gè)語句輸出多個(gè)數(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)行時(shí)從鍵盤接收輸入 在Java中輸入數(shù)據(jù)時(shí) 為了處理輸入數(shù)據(jù)的過程中可能出現(xiàn)的錯(cuò)誤 需要使用異常處理 以使程序具有 堅(jiān)固性 異常處理的詳細(xì)介紹在第5章 有兩種異常處理格式實(shí)現(xiàn)輸入 使用try catch語句與read方法 使用throwsIOException與read方法下面是從鍵盤讀一個(gè)字符 一個(gè)字符串或一個(gè)整數(shù)的程序示例 當(dāng)程序中需要實(shí)現(xiàn)鍵盤輸入功能時(shí)可以參考這些例子 2 標(biāo)準(zhǔn)輸入System in對象 importjava io 引入java io中的類 輸入輸出類 因程序中要 用到輸入輸出類的read 方法 表示引入該包中下面所有用到的類publicclassReadChar publicstaticvoidmain Stringargs throwsIOException 主方法拋出異常 charch char System in read 調(diào)用read方法 讀一個(gè) 字節(jié)數(shù)據(jù) 一個(gè)字符的ASCII碼值 存于ch中System out print ch 例 從鍵盤讀一個(gè)字符 使用throwsIOException與read方法 例 從鍵盤讀一數(shù)字串并轉(zhuǎn)化為整數(shù) importjava io classReadStringOrInt publicstaticvoidmain Stringargs throwsIOException bytebuf newbyte 20 20個(gè)字節(jié)的數(shù)組用于存字符串Stringstr intanInt System in read buf 從鍵盤讀一個(gè)數(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ù)某個(gè)條件來決定下面該進(jìn)行什么操作 或是某些事情應(yīng)根據(jù)需要不斷重復(fù)地去做 這時(shí)就需要用到流程控制語句來控制程序中語句的執(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á)式的條件 一旦某個(gè)條件滿足 即布爾表達(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)行后從鍵盤輸入二個(gè)整數(shù) 輸出其中的最小數(shù) 課堂練習(xí) 求最小數(shù) importjava io publicclassMin publicstaticvoidmain Stringargs throwsIOException bytebuf newbyte 20 Stringstr inta b min System out println 請輸入二個(gè)整數(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í)行多個(gè)可能操作中的一個(gè) 它的語法形式如下 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語句中的每個(gè) case常量 稱為一個(gè)case子句 代表一個(gè)case分支的入口 switch語句的注意點(diǎn)如下 1 測試表達(dá)式必須是byte char short int類型的表達(dá)式 而不能使用浮點(diǎn)類型或long類型 也不能為一個(gè)字符串 2 switch語句將測試表達(dá)式的值依次與每個(gè)case子句中的常量值相比較 如果匹配成功 則執(zhí)行該case子句中常量值后的語句 直到遇到break語句為止 3 case子句中常量的類型必須與測試表達(dá)式的類型相容 而且每個(gè)case子句中常量的值必須是不同的 常量也可以是常量表達(dá)式 不含變量 方法的表達(dá)式 4 default子句是可選的 當(dāng)測試表達(dá)式的值與任一case子句中的值都不匹配時(shí) 就執(zhí)行default后的語句 如果表達(dá)式的值與任一case子句中的值都不匹配且沒有default子句 則程序不執(zhí)行任何操作 而是直接跳出switch語句 進(jìn)入后續(xù)程序段的執(zhí)行 5 break語句用來在執(zhí)行完一個(gè)case分支后 使程序跳出switch語句 執(zhí)行switch語句的后續(xù)語句 因?yàn)閏ase子句只是起到一個(gè)標(biāo)號的作用 用來查找匹配的入口 然后從此處開始執(zhí)行 對后面的case子句的值不再進(jìn)行比較 而是直接執(zhí)行其后的語句 因此一般情況下 每個(gè)case分支后 要用break來終止后面的case分支語句的執(zhí)行 6 case分支中包括多個(gè)執(zhí)行語句時(shí) 可以不用花括號括起 7 通過if else語句可以實(shí)現(xiàn)switch語句所有的功能 但通常使用switch語句更簡練 且可讀性強(qiáng) 程序的執(zhí)行效率也高 8 if else語句可以基于一個(gè)范圍內(nèi)的值或一個(gè)條件來進(jìn)行不同的操作 但switch語句中的每個(gè)case子句都必須對應(yīng)一個(gè)單值 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 錯(cuò) System out println month 月是 season ss 例 用switch語句判斷一個(gè)月份屬于一年中哪個(gè)季節(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語句時(shí) 首先判斷布爾表達(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)語句計(jì)算s 1 1 2 1 3 1 100 Java還提供了另一個(gè)與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語句時(shí) 循環(huán)體至少執(zhí)行一次 例 用do while循環(huán)語句計(jì)算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è)語句 需構(gòu)成復(fù)合語句 for語句中循環(huán)控制變量必須是有序類型 常用的有整型 字符型 布爾型 循環(huán)控制變量初值和終值通常是與控制變量類型相一致的一個(gè)常量 也可以是表達(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個(gè)數(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語句使用的一些技巧 有時(shí) for語句在表達(dá)式1和表達(dá)式3的位置上需要包含多個(gè)表達(dá)式 這時(shí)可使用Java提供的逗號運(yùn)算符來實(shí)現(xiàn) 逗號運(yùn)算符是用逗號 分隔多個(gè)表達(dá)式 被看作一個(gè)表達(dá)式 這樣就可以在只能放一個(gè)表達(dá)式的地方放任意多個(gè)表達(dá)式 只須用逗號將它們分隔開 如 for i 1 j 10 i j i j 表達(dá)式1 表達(dá)式2及表達(dá)式3都可以為空語句 但分號不能省略 三者均為空的時(shí)候 相當(dāng)于一個(gè)無限循環(huán) 如 for 注意點(diǎn) 由于Java語句是用分號結(jié)束的 一個(gè)容易犯的錯(cuò)誤是在for語句的圓括號后面加了一個(gè)不應(yīng)有的分號 例如 下面的程序是想要計(jì)算 1 2 99 在上例中 分號被放在循環(huán)體的前邊 相當(dāng)于for語句的循環(huán)體為空語句 其結(jié)果是for循環(huán)體什么都不處理 此程序的編譯不會出任何錯(cuò)誤 但當(dāng)它運(yùn)行時(shí)并不產(chǎn)生預(yù)期的結(jié)果 運(yùn)行上面這個(gè)程序會得到如下輸出結(jié)果 value 100 一般來說 在循環(huán)次數(shù)預(yù)知的情況下 用for語句比較方便 而while語句和do while語句比較適合于循環(huán)次數(shù)不能預(yù)先確定的情況 循環(huán)嵌套 一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(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個(gè)數(shù)字 每行各列數(shù)的值等于第一列數(shù)乘自己所在列號 12345246810369121548121620510152025 循環(huán)嵌套 publicclassLoop Loop publicstaticvoidmain Stringargs intI J K I表示行號 J表示列號 K存臨時(shí)計(jì)算的值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元?jiǎng)偤觅I100只雞 問有多少種采購方案 分析 設(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的時(shí)候 但有時(shí)即使測試的條件為true 也希望循環(huán)立即終止 這時(shí)可以用跳轉(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)號的情況此時(shí) break語句的功能是終止break所在的循環(huán)語句 轉(zhuǎn)去執(zhí)行其后的第一條語句 對于不帶標(biāo)號的break語句 在執(zhí)行時(shí)有兩個(gè)特點(diǎn) 1 在有多重循環(huán)時(shí) 它只能使循環(huán)從本層的循環(huán)跳出來 2 跳出循環(huán)后轉(zhuǎn)移到本層循環(huán)的下一個(gè)語句 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)號就是加在語句前面的一個(gè)合法的標(biāo)識符 其后跟一個(gè)冒號 如下所示 標(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) 而不是終止整個(gè)循環(huán)語句的執(zhí)行 而break語句則是結(jié)束整個(gè)循環(huán)語句的執(zhí)行 continue語句的一般語法格式為 continue 標(biāo)號 其中 用 括起的標(biāo)號部分是可選的 1 不帶標(biāo)號的使用情況此時(shí) 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)號的使用情況此時(shí) continue語句跳過標(biāo)號所指的循環(huán)語句所有余下部分語句 回到標(biāo)號所指循環(huán)語句塊的條件測試部分繼續(xù)執(zhí)行 注意標(biāo)號應(yīng)該定義在外層循環(huán)語句的開始處 下面是一個(gè)使用帶標(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ù)組中的每個(gè)元素通過數(shù)組名加下標(biāo)進(jìn)行引用 數(shù)組作為一種特殊的數(shù)據(jù)類型具有以下特點(diǎn) 1 一個(gè)數(shù)組中所有的元素應(yīng)該是同一類型 2 數(shù)組中的元素是有順序的 3 數(shù)組中的一個(gè)元素通過數(shù)組名和數(shù)組下標(biāo)來確定 數(shù)組 1 一維數(shù)組的說明與構(gòu)造與C 中不同的是 Java中數(shù)組要用new操作符實(shí)例化才可使用 所以建立一個(gè)數(shù)組需要兩步 聲明數(shù)組 實(shí)例化格式 類型數(shù)組名 或 類型 數(shù)組名 數(shù)組名 new類型 數(shù)組長度 說明 第一行聲明一個(gè)數(shù)組名 并指明數(shù)組類型 可任何類型 和維數(shù) 第二行使用new操作符構(gòu)造數(shù)組并初始化 缺省值 即為數(shù)組元素分配存儲空間 并為每個(gè)數(shù)組元素都賦予一個(gè)初值 1 一維數(shù)組 上面的第二步實(shí)例化可以暫時(shí)不做 到需要時(shí)再完成 也可將上面的二步合并為一步 類型數(shù)組名 new類型 數(shù)組長度 例 intlist 聲明一個(gè)整型數(shù)組list newint 3 為上面聲明的數(shù)組分配3個(gè)整數(shù)元素 的內(nèi)存空間 并使每個(gè)元素初值為0合并為一步 intlist newint 3 2 數(shù)組的初始化數(shù)組初始化就是為數(shù)組元素指定初始值 通常在構(gòu)造數(shù)組時(shí) Jave會使每個(gè)數(shù)組元素初始化為一個(gè)默認(rèn)值 但在許多情況下 并不希望數(shù)組的初值為默認(rèn)值 此時(shí) 就需要用賦值語句來對數(shù)組進(jìn)行初始化 數(shù)組的初始化方式有兩種 一 像初始化簡單類型一樣自動初始化數(shù)組 不用new 即在說明數(shù)組的同時(shí)進(jìn)行初始化 稱為靜態(tài)初始化 二 僅用new創(chuàng)建數(shù)組 讓它取缺省值 到以后再為元素賦值 稱為動態(tài)初始化 例 inta 1 2 3 4 5 靜態(tài)初始化intlist newint 3 動態(tài)初始化上面的第一個(gè)語句聲明并創(chuàng)建了數(shù)組a 并且為數(shù)組每個(gè)元素賦初值 結(jié)果為 a 0 1 a 1 2 a 2 3 a 3 4 a 4 5上面的第二個(gè)語句僅聲明并創(chuàng)建了數(shù)組a 并未給數(shù)組賦初值 由Jave為數(shù)組元素默認(rèn)初始化 于是得到三個(gè)元素并且都有初值 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個(gè)元素 分別為 list 0 list 1 list 2 注意 不存在list 3 注意 1 下標(biāo)只能為byte short int或char類型 不能為long 2 Java在程序編譯時(shí)并不對數(shù)組下標(biāo)進(jìn)行越界檢查 但在運(yùn)行時(shí)會對數(shù)組下標(biāo)進(jìn)行越界檢查 以保證安全性 Java中的數(shù)組實(shí)際是Array類的一個(gè)對象 定義一個(gè)數(shù)組實(shí)際就是創(chuàng)建Array類的一個(gè)對象 該類中還有一些屬性和方法供數(shù)組使用 如對于每個(gè)數(shù)組都有一個(gè)屬性 length 它指明數(shù)組的長度 即元素個(gè)數(shù) 由程序自動計(jì)算 例如 list length指明了數(shù)組list的長度 Java中的數(shù)組還可利用數(shù)組名來互相賦值 但要注意 這種賦值實(shí)際是定義一個(gè)別名 即是同一數(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)用示例例 編寫一個(gè)程序 在其中建立一個(gè)有10個(gè)整數(shù)的數(shù)組 運(yùn)行后從鍵盤輸入10個(gè)整數(shù)放入數(shù)組 然后輸出其中的最大數(shù) importjava io publicclassArray1 publicstaticvoidmain Stringargs throwsIOException inti max a newint 10 bytebuf newbyte 20 Stringstr 程序如下 System out println 請輸入10個(gè)數(shù) for i 0 i 9 i 輸入10個(gè)數(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ù)組中的類型又是一個(gè)一維數(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í)還沒有為數(shù)組元素分配內(nèi)存空間 還需要用new關(guān)鍵字來創(chuàng)建數(shù)組 然后才可以使用該數(shù)組的每個(gè)元素 2 多維數(shù)組 對二維數(shù)組來說 分配內(nèi)存空間有下面幾種方法 直接為每一維分配空間 如 inta newint 2 3 該語句創(chuàng)建了一個(gè)二維數(shù)組a 其較高一維含兩個(gè)元素 每個(gè)元素為由3個(gè)整型數(shù)構(gòu)成的一維整型數(shù)組 如下所示 從最高維開始 分別為每一維分配空間 如 intb newint 2 最高維含2個(gè)元素 每 個(gè)元素為一個(gè)整型數(shù)組b 0 newint 3 最高維第一個(gè)元素是一個(gè)長度 為3的整型數(shù)組b 1 newint 5 最高維第二個(gè)元素是一個(gè)長度 為5的整型數(shù)組下圖為該數(shù)組的示意圖 注意 在使用運(yùn)算符new來分配內(nèi)存時(shí) 對于多維數(shù)組至少要給出最高維的大小 如果在程序中出現(xiàn)inta2 newint 編譯器將要提示如下錯(cuò)誤 Arraydimensionmissing2 二維數(shù)組元素的初始化二維數(shù)組元素的初始化同一維數(shù)組一樣有兩種方式 1 在說明數(shù)組的同時(shí)進(jìn)行初始化 2 僅用new創(chuàng)建數(shù)組 讓它取缺省值 到以后再為元素賦值 稱為動態(tài)初始化 例 inta 1 2 3 4 5 6 該語句聲明了一個(gè)有6個(gè)元素的二維數(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ù)組中每個(gè)元素 其引用方式為 數(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)用示例例 編寫一個(gè)程序 計(jì)算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個(gè)元素排序 需要進(jìn)行n 1趟 第1趟找出第1小的元素 與數(shù)組的第1個(gè)元素 即a 0 交換 從而最小的元素放到了最前面 第2趟找出第2小的元素 與數(shù)組的第2個(gè)元素 即a 1 交換 從而第2小的元素放到了第2位上 第n 1趟找出第n 1小的元素 與數(shù)組的第n 1個(gè)元素 即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) 開始時(shí)為區(qū)間的第1個(gè)下標(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個(gè) 2 編寫程序 輸入短整數(shù)n 計(jì)算 S 1 1 2 1 2 3 1 2 n 3 編寫求一元二次方程的實(shí)根的程序 4 已知兩個(gè)正整數(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è)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Java 語言 程序控制 語句
鏈接地址:http://weibangfood.com.cn/p-6375005.html