已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1,運(yùn)算符、表達(dá)式和流程控制,第四章,2,本章內(nèi)容,變量及其作用域 Java運(yùn)算符 表達(dá)式 分支語(yǔ)句 if-else語(yǔ)句 switch語(yǔ)句 循環(huán)語(yǔ)句 for 循環(huán) while 循環(huán) do-while 循環(huán) 特殊的循環(huán)控制語(yǔ)句,3,Java變量分類(lèi),變量用于記錄數(shù)值可變的數(shù)據(jù) 按所屬的數(shù)據(jù)類(lèi)型劃分: 基本數(shù)據(jù)類(lèi)型變量 引用數(shù)據(jù)類(lèi)型變量 按被聲明的位置劃分: 局部變量:方法或語(yǔ)句塊內(nèi)部定義的變量 成員變量:方法外部、類(lèi)的內(nèi)部定義的變量,4,局部變量聲明和初始化,Java變量使用前必須先聲明和初始化(賦初值) 局部變量聲明語(yǔ)法格式 DataType varName1=value1,varName2=value2 變量聲明和初始化舉例: public void amethod() int i; int j = i+5 ; / 編譯出錯(cuò),變量i還未被初始化 double d = 3.14; MyDate m; m = new MyDate(22,7,1964); System.out.println(m.getYear(); ,5,局部變量聲明和初始化示例,public class TestLocal public static void main(String args) int x; if (args0 != null) x = 7; int y = x; ,6,成員變量聲明和初始化,成員變量在類(lèi)的定義中聲明 在創(chuàng)建對(duì)象的同時(shí)創(chuàng)建有關(guān)的成員變量 成員變量創(chuàng)建后系統(tǒng)自動(dòng)對(duì)其進(jìn)行 默認(rèn)初始化 顯式初始化,7,成員變量聲明和初始化示例,public class Book private String title; public String getTitle() return title; public static void main(String args) Book b = new Book(); String s = b.getTitle(); / Compiles and runs String t = s.toLowerCase(); / Runtime Exception! ,8,變量作用域,局部變量的作用域就是它所在的方法或語(yǔ)句塊 在程序調(diào)用方法(進(jìn)入語(yǔ)句塊)時(shí),局部變量才被創(chuàng)建并可用,隨方法(語(yǔ)句塊)的退出,局部變量將被銷(xiāo)毀 成員變量依附于對(duì)象(局部變量)存在,具有與對(duì)象相同的生存期和作用域。,9,變量作用域舉例,public class Test private int i=1; public void method1() int i=4, j=5; this.i = i + j; method2(7); public void method2(int i) int j=8; this.i = i + j; System.out.println(this.i); public static void main(String args) Test t = new Test(); t.method1(); ,main,棧內(nèi)存,t,this,i,j,method1,4,5,7,8,i,j,this,method2,Test對(duì)象,i,10,Ex1,練習(xí)上頁(yè)例程:Test.java,在各方法中添加輸出語(yǔ)句顯示Test對(duì)象屬性i(this.i) 的值,分析程序執(zhí)行流程并體會(huì)各變量的作用域。 /輸出語(yǔ)句可采用:System.out.println(this.i);,11,運(yùn)算符,算術(shù)運(yùn)算符: +,*,/,%,+, 關(guān)系運(yùn)算符: ,=, 賦值運(yùn)算符: = 擴(kuò)展賦值運(yùn)算符:+=,=,*=,/= 字符串連接運(yùn)算符: +,12,等于運(yùn)算符示例(1),class ComparePrimitives public static void main(String args) System.out.println(“character a = a? “ + (a = a); System.out.println(“character a = b? “ + (a = b); System.out.println(“5 != 6? “ + (5 != 6); System.out.println(“5.0 = 5L? “ + (5.0 = 5L); System.out.println(“true = false? “ + (true = false); ,13,等于運(yùn)算符示例(2),boolean b = false; if (b = true) System.out.println(“b is true”); else System.out.println(“b is false”); ,14,等于運(yùn)算符示例(3),import java.awt.Button; class CompareReference public static void main(String args) Button a = new Button(“Exit“); Button b = new Button(“Exit“); Button c = a; System.out.println(“Is reference a = b? “ + (a = b); System.out.println(“Is reference a = c? “ + (a = c); ,15,增量、減量運(yùn)算符示例(1),class MathTest static int players = 0; public static void main (String args) System.out.println(“players online: “ + players+); System.out.println(“The value of players is “ + players); System.out.println(“The value of players is now “ + +players); ,16,增量、減量運(yùn)算符示例(2),int x = 2; int y = 3; if (y = x+) | (x +y) System.out.println(“x = “ + x + “ y = “ + y); ,17,邏輯運(yùn)算符(1),邏輯運(yùn)算符功能 !- 邏輯非 & - 邏輯與 | - 邏輯或 - 邏輯異或 &- 短路與 | - 短路或 邏輯運(yùn)算符功能說(shuō)明:,18,邏輯運(yùn)算符(2),短路邏輯運(yùn)算符應(yīng)用 ,19,邏輯運(yùn)算符(3),class TestOR public static void main (String args) if (isItSmall(3) | (isItSmall(7) System.out.println(“Result is true“); if (isItSmall(6) | (isItSmall(9) System.out.println(“Result is true“); public static boolean isItSmall(int i) if (i 5) System.out.println(“i less than 5“); return true; else System.out.println(“i greater than 5“); return false; ,20,位運(yùn)算符,位運(yùn)算符功能 - 取反 & - 按位與 | - 按位或 - 按位異或 位運(yùn)算符功能說(shuō)明:,&,|,21,移位運(yùn)算符(1),左移 “ab; “將二進(jìn)制形式的a逐位右移b位,最高位空出的b位補(bǔ)原來(lái)的符號(hào)位; 無(wú)符號(hào)右移 “ab;“將二進(jìn)制形式的a逐位右移b位,最高位空出的b位補(bǔ)0。,22,移位運(yùn)算符(2),移位運(yùn)算符性質(zhì) 適用數(shù)據(jù)類(lèi)型:byte、short、char、int、long,對(duì)低于int型的操作數(shù)將先自動(dòng)轉(zhuǎn)換為int型再移位 對(duì)于int型整數(shù)移位ab,系統(tǒng)先將b對(duì)32取模,得到的結(jié)果才是真正移位的位數(shù) 對(duì)于long型整數(shù)移位時(shí)ab ,則是先將移位位數(shù)b對(duì)64取模,23,移位運(yùn)算符(3),移位運(yùn)算符應(yīng)用舉例,24,賦值運(yùn)算符(1),賦值運(yùn)算符= 當(dāng)“=“兩側(cè)的數(shù)據(jù)類(lèi)型不一致時(shí),可以適用默認(rèn)類(lèi)型轉(zhuǎn)換或強(qiáng)制類(lèi)型轉(zhuǎn)換原則進(jìn)行處理 long l = 100; int i = (int)l; 特例:可以將整型常量直接賦值給byte, short, char等類(lèi)型變量,而不需要進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,只要不超出其表數(shù)范圍 byte b = 12; /合法 byte b = 4096; /非法,25,賦值運(yùn)算符(2),當(dāng)把一個(gè)引用變量賦給另一個(gè)引用變量是, 兩個(gè)變量引用了同一個(gè)對(duì)象。(String除外) 示例: import java.awt.Dimension; class ReferenceTest public static void main (String args) Dimension a = new Dimension(5,10); System.out.println(“a.height = “ + a.height); Dimension b = a; b.height = 30; System.out.println(“a.height = “ + a.height + “after change to b“); ,26,賦值運(yùn)算符(3),擴(kuò)展賦值運(yùn)算符,27,字符串連接運(yùn)算符 +,“+“ 除用于算術(shù)加法運(yùn)算外,還可用于對(duì)字符串進(jìn)行連接操作 int i = 300 +5; String s = “hello, “ + “world!“; “+“運(yùn)算符兩側(cè)的操作數(shù)中只要有一個(gè)是字符串(String)類(lèi)型,系統(tǒng)會(huì)自動(dòng)將另一個(gè)操作數(shù)轉(zhuǎn)換為字符串然后再進(jìn)行連接 String a = “String“; int b = 3; int c = 7; System.out.println(a + b + c); System.out.println(a + (b + c));,28,表達(dá)式,表達(dá)式是符合一定語(yǔ)法規(guī)則的運(yùn)算符和操作數(shù)的序列 a 5.0 + a (a-b)*c-4 i30 & i%10!=0 表達(dá)式的類(lèi)型和值 對(duì)表達(dá)式中操作數(shù)進(jìn)行運(yùn)算得到的結(jié)果稱(chēng)為表達(dá)式的值 表達(dá)式的值的數(shù)據(jù)類(lèi)型即為表達(dá)式的類(lèi)型 表達(dá)式的運(yùn)算順序 首先應(yīng)按照運(yùn)算符的優(yōu)先級(jí)從高到低的順序進(jìn)行 優(yōu)先級(jí)相同的運(yùn)算符按照事先約定的結(jié)合方向進(jìn)行,29,運(yùn)算符優(yōu)先級(jí),30,Ex2,練習(xí)下面的程序,排除編譯錯(cuò)誤,分析其輸出 結(jié)果: public class MyTest public static void main(String args) int a=10 int i = a; int j = a3; int k = a32; System.out.println(“i=” + i ); System.out.println(“j=“ + j ); System.out.println(“k=“ +k ); System.out.println(“m=“ +m ); ,31,分支語(yǔ)句,分支語(yǔ)句實(shí)現(xiàn)程序流程控制的功能 ,即根據(jù)一定的條件有選擇地執(zhí)行或跳過(guò)特定的語(yǔ)句 Java分支語(yǔ)句分類(lèi) if-else 語(yǔ)句 switch 語(yǔ)句,32,if-else語(yǔ)句語(yǔ)法格式,if(boolean類(lèi)型表達(dá)式) 語(yǔ)句或語(yǔ)句塊; if(boolean類(lèi)型表達(dá)式) 語(yǔ)句或語(yǔ)句塊; else if(boolean類(lèi)型表達(dá)式) 語(yǔ)句或語(yǔ)句塊; else 語(yǔ)句或語(yǔ)句塊; ,33,if-else語(yǔ)句應(yīng)用舉例,public class Test public static void main(String args) Test t = new Test(); t.test(75); public void test(int age) if (age250) System.out.println(“是個(gè)妖怪!“); else System.out.println(“此人芳齡 “ + age + “ 馬馬乎乎啦!“); ,34,switch語(yǔ)句語(yǔ)法格式,switch(exp) case const1: statement1; break; case const2: statement2; break; case constN: statementN; break; default: statement_dafault; break; ,35,switch語(yǔ)句應(yīng)用舉例,public class Test public static void main(String args) int i = 1; switch (i) case 0: System.out.println(“zero“); break; case 1: System.out.println(“one“); break; case 2: System.out.println(“two“); break; default: System.out.println(“default“); break; ,36,switch語(yǔ)句有關(guān)規(guī)則,表達(dá)式expr的返回值必須是下述幾種類(lèi)型之一:int, byte, char, short; case子句中的值const 必須是常量,且所有case子句中的值應(yīng)是不同的; default子句是任選的; break語(yǔ)句用來(lái)在執(zhí)行完一個(gè)case分支后使程序跳出switch語(yǔ)句塊;,37,Ex3,參照M04-24,26頁(yè)的例子,練習(xí)使用if-else、switch分支語(yǔ)句,注意體會(huì)break/default語(yǔ)句的用法;,38,循環(huán)語(yǔ)句,循環(huán)語(yǔ)句功能 在循環(huán)條件滿(mǎn)足的情況下,反復(fù)執(zhí)行特定代碼 循環(huán)語(yǔ)句的四個(gè)組成部分 初始化部分(init_statement) 循環(huán)條件部分(test_exp) 循環(huán)體部分(body_statement) 迭代部分(alter_statement) 循環(huán)語(yǔ)句分類(lèi) for 循環(huán) while 循環(huán) do/while 循環(huán),39,for 循環(huán)語(yǔ)句,語(yǔ)法格式 for (init_statement; test_exp; alter_statement) body_statement 應(yīng)用舉例 public class ForLoop public static void main(String args) int result = 0; for(int i=1; i=100; i+) result += i; System.out.println(“result=“ + result); ,40,while 循環(huán)語(yǔ)句,語(yǔ)法格式 init_statement while( test_exp) body_statement; alter_statement; 應(yīng)用舉例 public class WhileLoop public static void main(String args) int result = 0; int i=1; while(i=100) result += i; i+; System.out.println(“result=“ + result); ,41,do/while 循環(huán)語(yǔ)句,語(yǔ)法格式 init_statement do body_statement; alter_statement; while( test_exp); 應(yīng)用舉例 public class WhileLoop public static void main(String args) int result = 0, int i=1; do result += i; i+; while(i=100); System.out.println(“result=“ + result); ,42,特殊流程控制語(yǔ)句,break 語(yǔ)句 break語(yǔ)句用于終止某個(gè)語(yǔ)句塊的執(zhí)行 break; break語(yǔ)句出現(xiàn)在多層嵌套的語(yǔ)句塊中時(shí),可以通過(guò)標(biāo)簽指明要終止的是哪一層語(yǔ)句塊 label1: label2: label3: break label2; ,43,特殊流程控制語(yǔ)句,break 語(yǔ)句用法舉例 public class TestBreak public static void main(String args) for(int i = 0; i10; i+) if(i=3) break; System.out.println(“ i =“ + i); Sys
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園工作總結(jié)童年記憶永不磨滅
- 健康會(huì)所前臺(tái)工作感受
- 水處理行業(yè)助理工作總結(jié)
- 文化娛樂(lè)行業(yè)員工績(jī)效考核實(shí)踐
- 2023-2024學(xué)年浙江省杭州四中高三(下)第一次訓(xùn)練地理試卷
- 2021年江蘇省宿遷市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年廣東省韶關(guān)市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年安徽省合肥市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2021年江西省鷹潭市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 《心理學(xué)與讀心術(shù)》課件
- 全球變暖視野下中國(guó)與墨西哥的能源現(xiàn)狀分析
- 建筑結(jié)構(gòu)荷載統(tǒng)計(jì)計(jì)算表格(自動(dòng)版)
- 學(xué)前教育學(xué)課程思政建設(shè)
- 事故隱患報(bào)告和舉報(bào)獎(jiǎng)勵(lì)制度
- 腹部外傷門(mén)診病歷
- 品質(zhì)異常處理及要求培訓(xùn)
- 模具部年終總結(jié)--ppt課件
- 立式熱虹吸再沸器機(jī)械設(shè)計(jì)說(shuō)明書(shū)
- 國(guó)家開(kāi)放大學(xué)電大《生產(chǎn)與運(yùn)作管理》2025-2026期末試題及答案
- 質(zhì)量保證大綱(共14頁(yè))
- 木材材積表0.1-10米.xls
評(píng)論
0/150
提交評(píng)論