運算符表達式與語句.ppt_第1頁
運算符表達式與語句.ppt_第2頁
運算符表達式與語句.ppt_第3頁
運算符表達式與語句.ppt_第4頁
運算符表達式與語句.ppt_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第3章運算符、表達式與語句,本章導讀 1. 算術運算符和算術表達式 2. 關系運算符與關系表達式 3. 邏輯運算符與邏輯表達式 4. 賦值運算符與賦值表達式 5. 移位運算符 6. 位運算符 7. 條件運算符 8. instanceof 運算符,9.一般表達式 10. 語句概述 11. 分支語句 12.循環(huán)語句 13.跳轉語句,3.1算術運算符和算術表達式,(1)加減運算符 加減運算的結合性是從左到右。加減運算的操作元是 整型或浮點型數(shù)據,加減運算符的優(yōu)先級是4級。 (2)乘、除和求余運算符 乘、除和求余運算的運算符號為*、/、%,都是雙目運 算符。*、/、%運算符的結合性是從左到右,例如:

2、2*3/8,先計算2*3,然后再將得到的結果除以8。乘、除 和求余運算的操作元是整型或浮點型數(shù)據。*、/、%運 算符的優(yōu)先級是3級。,(3)自增、自減運算符 自增、自減運算的運算符號為:+、-,都是單目運算符,運算符的優(yōu)先級是2級。運算符可以放在操作元之前,也可以放在操作元之后,但操作元必須是一個整型或浮點型變量(不能是常量或表達式)。運算符的作用是使變量的值增1或減1,如: +x,-x表示在使用x之前,先使x的值加(減)1。 x+,x-表示在使用x之后,使x的值加(減)1。 粗略地看,+x和x+的作用相當于x=x+1。但+x和x+的不同之處在于,+x是先執(zhí)行x=x+1再使用x的值,而x+是先

3、使用x的值再執(zhí)行x=x+1。如果 x的原值是5,則: 對于y=+x;y的值為6。 對于y=x+;y的值為5,然后x的值變?yōu)?。,(4)算術表達式 用算術符號和操作元連接起來的符合Java語法規(guī)則的式子,稱為算術表達式。如 x+2*y-30+3*(y+5) -12+n+(-n)。 (5)算術混合運算的精度 精度從“低”到“高”排列的順序是: byte short int long float double Java將按運算符兩邊的操作元的最高精度保留結果的精度,例如:5/2的結果是2,要想得到2.5,必須寫成5.0/2或5.0f/2。,char型數(shù)據和整型數(shù)據運算結果的精度是int。例如: by

4、te k=18; 那么 H+k; 的結果是int型,因此下列寫法是不正確的, char ch=H+k; 應當寫成: char ch=(char)(H+k);,返回,3.2關系運算符與關系表達式,關系運算符用來比較兩個值的關系,關系運算符的運算結果是boolean型數(shù)據,當運算符對應的關系成立時,運算結果是true,否則是false。 (1)大于,小于關系運算符 大小關系運算的符號分別是:、=、1的結果是true。在書寫時要特別注意的是“20-17的結果為true,因為算術運算符的級別高于關系運算符,1020-17相當于10(20-17)。,(2)等與不等關系 等與不等關系運算的符號分別是:“=

5、”、“!=”,都是雙目運算符。運算符的級別是7級?!?”和“!=”都是由2個字符組成的一個完整的符號,書寫時不要含有空格。注意不要將后面講述的賦值運算符“=”與等號運算符“=”混淆。 (3)關系表達式 結果為數(shù)值型的變量或表達式可以通過關系運算符形成關系表達式。例如,2418,(x+y+z)30+x等。,返回,3.3邏輯運算符與邏輯表達式,邏輯運算用來實現(xiàn)boolean型數(shù)據的邏輯“與”、“或”和“非”運算,運算結果是boolean型數(shù)據。 (1)邏輯“與”和邏輯“或” 邏輯“與”和邏輯“或”運算的符號是: 1111 1000 在進行a1運算時,首先將1111 1000生級為int型,將高位用

6、1填充: 1111 1111 1111 1111 1111 1111 1111 1000 然后在進行移位運算得到-16: 1111 1111 1111 1111 1111 1111 1111 0000,因此,如果把a1的結果賦值給一個byte型變量就必須進行強制轉換運算: byte b=(byte)(a1); 在進行an運算時,如果a是byte、short或int型數(shù)據,系統(tǒng)總是先計算出n%32的結果m,然后進行am運算。例如,a33的計算結果與a1相同。對于long型數(shù)據,系統(tǒng)總是先計算出n%64的結果m,然后進行am運算。,(2)右移位運算符 右移位運算的符號為:,是雙目運算符。假設a是一

7、個被移位的整型數(shù)據,n是位移量。 an運算的結果是通過將a的所有位都右移n位,每右移一個位,右邊的低階位被移出丟棄,并用0或1填充左邊的高位,a是正數(shù)用0填充,負數(shù)時用1填充。因此,a每右移一次,如果該數(shù)的每一計算有效位都沒有從低位移出時,就相當于將a除以2并舍棄了余數(shù)。整數(shù)不斷右移位的最后結果一定是0,而負數(shù)不斷右移位的最后結果是-1。 對于byte或short型數(shù)據,an的運算結果是int型精度。,在進行an運算時,如果a是byte、short或int型數(shù)據,系統(tǒng)總是先計算出n%32的結果m,然后進行am運算,例如,a33的計算結果與a1相同。對于long型數(shù)據,系統(tǒng)總是先計算出n%64的

8、結果m,然后進行am運算。 在下面的例子1中,用戶輸入移位運算的兩個操作元,程序給出右移和左移后的結果。 名字:Example3_1.java,返回,import java.util.*; public class Example3_1 public static void main (String args ) Scanner reader=new Scanner(System.in); System.out.println(輸入待移位的int型整數(shù):); int x = reader.nextInt(); System.out.println(輸入移位量:); int n = reader

9、.nextInt(); System.out.println(左移位的結果:+(xn); ,3.6位運算符,(1)“按位與”運算符 “ char secret=z; for(int i=0;ia.length;i+) ai=(char)(aisecret); System.out.printf(密文:n); for(int i=0;ia.length;i+) ,System.out.printf(%3c,ai); for(int i=0;ia.length;i+) ai=(char)(aisecret); System.out.printf(n原文:n); for(int i=0;ia.len

10、gth;i+) System.out.printf(%3c,ai); ,圖3-2,返回,3.7條件運算符,條件運算符是一個3目運算符,它的符號是:“?:”,需要連接3個操作元,用法如下: op1?op2:op3 要求第一個操作元op1的值必須是boolean型數(shù)據。運算法則是:當op1的值是true時,op1?op2:op3運算的結果是op2的值;當op1的值是false時,op1?op2:op3運算的結果是op3的值。例如,128?100:200的結果是100;128?100:200的結果是200。,返回,3.8instanceof 運算符,該運算符是雙目運算符,左面的操作元是一個對象,右面

11、是一個類。當左面的對象是右面的類創(chuàng)建的對象時,該運算的結果是true,否則是false。該運算符將在第4章以后使用。,返回,3.9一般表達式,Java的一般表達式就是用運算符及操作元連接起來的符合Java規(guī)則的式子,簡稱表達式。一個Java表達式必須能求值,即按著運算符的計算法則,可以計算出表達式的值。 例如,假如int x=1,y=-2,n=10;那么,表達式 x+y+(-n)*(xy (2)表達式語句 一個表達式的最后加上一個分號就構成了一個語句,稱作表達式語句。分號是語句不可缺少的部分。例如,賦值語句: x=23;,(3)復合語句 可以用“”和“”把一些語句括起來構成復合語句,一個復合語

12、句也稱作一個代碼塊。例如, z=23+x; System.out.println(hello); (4)控制語句 控制語句包括:條件分支語句、循環(huán)語句和跳轉語句。 (5)package 語句和 import語句 package語句和import語句與類、對象有關,將在第4章講解。,返回,3.11分支語句,1條件分支語句 (1)if-else語句. if-else語句是Java中的一條語句,由一個“if”、“else”和兩個復合語句按一定格式構成,if-else 語句的格式如下: if(表達式) 若干語句 else 若干語句 一條if-else語句的作用是根據不同的條件產生不同的操作,執(zhí)行法則如

13、下: if 后面( )內的表達式的值必須是boolean型的。如果表達式的值為true,則執(zhí)行緊跟著的復合語句;如果表達式的值為false,則執(zhí)行else后面的復合語句。,(2)多條件if-else if-else語句 程序有時需要根據多條件來選擇某一操作,這時就可以使用if-else if-else語句。if-else if-else語句是Java中的一條語句,由一個“if”、 若干個“else if”、一個“else”與若干個復合語句按一定規(guī)則構成。語句的格式如下: if(表達式1) 若干語句 else if(表達式2) 若干語句 else if(表達式n) 若干語句 else 若干語句

14、,有時為了編程的需要,復合語句中可以沒有任何語句。一條if-else if-else語句的作用是根據不同的條件產生不同的操作,執(zhí)行法則如下: if 以及else if后面( )內的表達式的值必須是boolean型的。該語句執(zhí)行時,首先計算if后括號中的表達式的值,如果該表達式的值為true,則執(zhí)行緊跟著的復合語句,然后就結束整個語句的執(zhí)行;如果if后括號中的表達式的值為false,就依次再計算后面的else if的表達式的值,直到出現(xiàn)某個表達式的值為true為止,然后執(zhí)行該else if后面的復合語句,結束整個語句的執(zhí)行。如果所有的表達式的值都是false,就執(zhí)行else后面復合語句,結束整個

15、語句的執(zhí)行。 在下面的例子3中,用戶在鍵盤輸入3個數(shù),程序判斷這3個數(shù)能構成什么形狀的三角形。Example3_3.java,import java.util.*; public class Example3_3 public static void main (String args ) Scanner reader=new Scanner(System.in); double a=0,b=0,c=0; System.out.println(輸入邊a:); a=reader.nextDouble(); System.out.println(輸入邊b:); b=reader.nextDoubl

16、e(); System.out.println(輸入邊c:); c=reader.nextDouble(); if(a+bc else if(a*ab*b+c*c ,2switch開關語句 switch 語句是多分支的開關語句,它的一般格式定義如下: switch(表達式) case 常量值1: 若干個語句 break; case 常量值2: 若干個語句 break; case 常量值n: 若干個語句 break; default: 若干語句 ,switch語句中表達式的值必須是整型或字符型;常量值1到常量值 n必須也是整型或字符型。switch語句首先計算表達式的值,如果表達式的值和某個ca

17、se 后面的常量值相同,就執(zhí)行該case里的若干個語句,直到碰到break語句為止。若沒有任何常量值與表達式的值相同,則執(zhí)行default后面的若干個語句。其中default是可有可無的,如果它不存在,并且所有的常量值都和表達式的值不相同,那么switch語句就不會進行任何處理。需要注意的是,在同一個switch語句中,case后的常量值必須互不相同。 下面的例子4使用了switch語句,用戶在鍵盤輸入一個代表月份的整數(shù),程序輸出是該月是在年度的第幾季度。,返回,import java.util.*; public class Example3_4 public static void mai

18、n (String args ) Scanner reader=new Scanner(System.in); System.out.println(輸入一個月份:); int n=reader.nextInt(); switch(n) case 1 : case 2 : case 3 : System.out.printf(%d月屬于第一季度,n); break; case 4 : case 5 :,case 6 : System.out.printf(%d月屬于第二季度,n); break; case 7 : case 8 : case 9 : System.out.printf(%d月屬

19、于第三季度,n); break; case 10 : case 11 : case 12 : System.out.printf(%d月屬于第四季度,n); break; default: System.out.printf(%d不代表月份,n); ,3.12循環(huán)語句,1while循環(huán) while語句的一般格式: while(表達式) 若干語句 while語句由關鍵字while、括號中的一個求值為boolean型數(shù)據的表達式和一個復合語句組成,其中的復合語句稱作循環(huán)體,循環(huán)體只有一條語句時,大括號“”可以省略,但最好不要省略,以便增加程序的可讀性。表達式稱作循環(huán)條件。while語句的執(zhí)行規(guī)則是

20、: (1)計算表達式的值,如果該值是true時,就進行(2),否則進行(3)。 (2)執(zhí)行循環(huán)體,再進行(1) (3)結束while語句的執(zhí)行 while語句執(zhí)行規(guī)則如流程圖3. 5所示。,while語句執(zhí)行規(guī)則如流程圖3. 5所示。,2do-while循環(huán) 一般格式: do 若干語句 while(表達式); do-while循環(huán)和while循環(huán)的區(qū)別是:do-while的循環(huán)體至少被執(zhí)行一次,如圖3.6所示。 下面的例子5分別用while和do-while循環(huán)計算常數(shù)e的近似值:e=1+1/1+1/2!+1/3!+ 。,下面的例子5分別用while和do-while循環(huán)計算常數(shù)e的近似值:e

21、=1+1/1+1/2!+1/3!+ ,public class Example3_5 public static void main (String args ) double sum=0,item=1; int i=1; while(i=1000) sum=sum+item; i+; item=item*(1.0/i); sum=sum+1; System.out.println(e=+sum);,sum=0; i=1; item=1; do sum=sum+item; i+; item=item*(1.0/i) ; while(i=1000); sum=sum+1; System.out.

22、println(e=+sum); ,3for循環(huán) for語句的一般格式: for (表達式1;表達式2;表達式3) 若干語句 for語句由關鍵字for、括號中用分號分割的3個表達式,以及一個復合語句組成,其中的“表達式2”必須是一個求值為boolean型數(shù)據的表達式,而復合語句稱作循環(huán)體。,for語句的執(zhí)行規(guī)則是: (1)計算“表達式1”,完成必要的初始化工作 (2)判斷“表達式2”的值,若“表達式2”的值為true, 則進行(3),否則進行(4)。 (3)執(zhí)行循環(huán)體,然后計算“表達式3”,以便改變循 環(huán)條件,進行(2)。圖3.9 使用for語句 (4)結束for語句的執(zhí)行. 一個數(shù)如果恰好等

23、于它的因子之和,這個數(shù)就稱為“完數(shù)”。例如,6=1+2+3。下面的例子6使用for循環(huán)計算出1000內的全部完數(shù),返回,public class Example3_6 public static void main (String args ) int sum,i,j; for(i=1;i=1000;i+) for(j=1,sum=0;j=i/2;j+) if(i%j=0), sum=sum+j; if(sum=i) System.out.printf(%8d是一個完數(shù)%n,i); ,3.13跳轉語句,跳轉語句是指用關鍵break或continue加上分號構成的語句,例如: break; 在循

24、環(huán)語句的循環(huán)體中使用跳轉語句。在一個循環(huán)中,比如循環(huán)50次的循環(huán)語句中,如果在某次循環(huán)體的執(zhí)行中執(zhí)行了break語句,那么整個循環(huán)語句就結束。如果在某次循環(huán)體的執(zhí)行中執(zhí)行了continue語句,那么本次循環(huán)就結束,即不再執(zhí)行本次循環(huán)中循環(huán)體中continue語句后面的語句,而轉入進行下一次循環(huán)。 下面的例子7使用的跳轉語句。 計算10以內能被3整除數(shù)的和。Example3_7.java,返回,class Example3_7 public static void main(String args) int sum=0,i,j; for( i=1;i=10;i+) /該循環(huán)計算3+6+9。 if

25、(i%3!=0) continue; else sum=sum+i; System.out.println(sum=+sum); ,第三章 習題,1。下列語句輸出的結果是什么? Int a=100, x,y; X=+a; Y=a- System.out.printf(“%d, %d,%d”,x,y,a);,答:101,101,100,2。下列語句那些有錯誤? Int x=0; X=5.0/2; Float y=12.5F; Y=5.0/2;,答:x=5.0/2; 錯。,3。下列語句那些有錯? Byte x=32; Char c=a; Int n=c-x; C=c-x;,答:c=c-x;錯 應為 int類型。,4下列語句正確的是(A, c ) A.表達式“12+5634”的值是true B.表達式“12+56|34”是非法表達式 C.表達式“x+y=12”是非法表達式 D.表達式“12+5634”的值是13,5。對于整數(shù)m, m1的結果一定是2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論