版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
4章運(yùn)算符、表達(dá)式與語句主要內(nèi)容運(yùn)算符與表達(dá)式語句概述if條件分支語句switch開關(guān)語句循環(huán)語句break和continue語句數(shù)組§4.1運(yùn)算符與表達(dá)式
Java提供了豐富的運(yùn)算符,如算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符等。2010-8-14§4.1.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式1.加減運(yùn)算符:+,-
加減運(yùn)算符是二目運(yùn)算符;加減運(yùn)算符的結(jié)合方向是從左到右;加減運(yùn)算符的操作元是整型或浮點(diǎn)型數(shù)據(jù),加減運(yùn)算符的優(yōu)先級是4級。2.乘、除和求余運(yùn)算符:*,/,%以上運(yùn)算符是二目運(yùn)算符,結(jié)合方向是從左到右,乘、除和求余運(yùn)算符的操作元是整型或浮點(diǎn)型數(shù)據(jù)。運(yùn)算符的優(yōu)先級是3級。3.算術(shù)表達(dá)式用算術(shù)符號和括號連接起來的符合java語法規(guī)則的式子,稱為算術(shù)表達(dá)式。運(yùn)算符描述+加-減*乘/除%取模(求余)整數(shù)除法的結(jié)果是整數(shù),如5/2=2而不是2.5運(yùn)算符%得出除法的余數(shù),如5%2=1算術(shù)運(yùn)算符的優(yōu)先級別*、/、%+、-運(yùn)算符 例子 等價于+= i+=8 i=i+8-= f-=8.0 f=f-8.0*= i*=8 i=i*8/= i/=8 i=i/8%= i%=8 i=i%8簡捷賦值運(yùn)算符2010-8-17§4.1.2自增,自減運(yùn)算符自增、自減運(yùn)算符:++,--
是單目運(yùn)算符,可以放在操作元之前,也可以放在操作元之后。操作元必須是一個整型或浮點(diǎn)型變量。作用是使變量的值增1或減1,如:++x(--x)表示在使用x之前,先使x的值增(減)1。x++(x--)表示在使用x之后,使x的值增(減)1。inti=3;intj=4;inta=i+++i++;intb=++j+++j;printf("%d,%d\n",a,b);inti=3;intj=4;i++;++j;printf("%d,%d\n",i,j);inti=3;intj=4;inta=i++;intb=++j;printf("%d,%d\n",a,b);publicclassTest{publicstaticvoidmain(String[]args){inti=1;
i=i++;i=i+++++i;i=i+++++i+++i;System.out.println("i="+i);}}2010-8-110§4.1.3算術(shù)混合運(yùn)算的精度精度從“低”到“高”排列的順序是:byteshortcharintlongfloatdoubleJava在計算算術(shù)表達(dá)式的值時,使用下列計算精度規(guī)則:1.如果表達(dá)式中有雙精度浮點(diǎn)數(shù)(double型數(shù)據(jù)),則按雙精度進(jìn)行運(yùn)算。2.如果表達(dá)式中最高精度是單精度浮點(diǎn)數(shù)(float型數(shù)據(jù)),則按單精度進(jìn)行運(yùn)算。3.如果表達(dá)式中最高精度是long型整數(shù),則按long精度進(jìn)行運(yùn)算。4.如果表達(dá)式中最高精度低于int型整數(shù),則按int精度進(jìn)行運(yùn)算。2010-8-111§4.1.4關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算符:關(guān)系運(yùn)算符是二目運(yùn)算符,用來比較兩個值的關(guān)系。關(guān)系運(yùn)算符的運(yùn)算結(jié)果是boolean型,當(dāng)運(yùn)算符對應(yīng)的關(guān)系成立時,運(yùn)算結(jié)果是true,否則是false。
運(yùn)算符 名稱 例子
結(jié)果
< 小于 1<2
true <= 小于等于 1<=2true > 大于 1>2
false >= 大于等于 1>=2false == 等于 1==2false != 不等于 1!=2true2010-8-113§4.1.5邏輯運(yùn)算符與邏輯表達(dá)式邏輯運(yùn)算符包括&&,||,!其中&&、||為二目運(yùn)算符,實現(xiàn)邏輯與、邏輯或;!為單目運(yùn)算符,實現(xiàn)邏輯非。邏輯運(yùn)算符的操作元必須是boolean型數(shù)據(jù),邏輯運(yùn)算符可以用來連接關(guān)系表達(dá)式。
運(yùn)算符名稱說明&&條件與運(yùn)算符當(dāng)左邊的表達(dá)式計算結(jié)果為false時,將不再運(yùn)算右面的表達(dá)式;反之都運(yùn)算||條件或運(yùn)算符當(dāng)左邊的表達(dá)式計算結(jié)果為true時,將不再運(yùn)算右面的表達(dá)式;反之都運(yùn)算&無條件與運(yùn)算符左右表達(dá)式都運(yùn)算|無條件或運(yùn)算符左右表達(dá)式都運(yùn)算(增)無條件邏輯運(yùn)算符publicclassExample{publicstaticvoidmain(Stringargs[]){intx1=100,y1=200;intx2=100,y2=200;booleanr1,r2; r1=x1<10&&y1++<100; r2=x2<10&y2++<100; System.out.println("x1="+x1+"y1="+y1+"r1="+r1); System.out.println("x2="+x2+"y2="+y2+"r2="+r2);}}2010-8-116§4.1.6賦值運(yùn)算符與賦值表達(dá)式賦值運(yùn)算符:=賦值運(yùn)算符是二目運(yùn)算符,左面的操作元必須是變量,不能是常量或表達(dá)式。賦值運(yùn)算符的優(yōu)先級較低,是14級,結(jié)合方向右到左。賦值表達(dá)式的值就是“=”左面變量的值。注意:不要將賦值運(yùn)算符“=”與等號邏輯運(yùn)算符“==”混淆。2010-8-117§4.1.7位運(yùn)算符對兩個整型數(shù)據(jù)實施位運(yùn)算,即對兩個整型數(shù)據(jù)對應(yīng)的位進(jìn)行運(yùn)算得到一個新的整型數(shù)據(jù)。1.“按位與”運(yùn)算“按位與”運(yùn)算符“&”是雙目運(yùn)算符。2.“按位或”運(yùn)算“按位或”運(yùn)算符:“|”是二目運(yùn)算符。3.“按位非”運(yùn)算“按位非”運(yùn)算符:“~”是單目運(yùn)算符。4.“按位異或”運(yùn)算“按位異或”運(yùn)算符:“^”是二目運(yùn)算符。注意:參與運(yùn)算的是兩個整型數(shù)據(jù)、結(jié)果也是整型數(shù)據(jù)。注意:運(yùn)算法則是什么?運(yùn)算結(jié)果的精度怎樣?見教材P302010-8-118§4.1.8instanceof運(yùn)算符
instanceof運(yùn)算符是二目運(yùn)算符,左面的操作元是一個對象;右面是一個類。當(dāng)左面的對象是右面的類或子類創(chuàng)建的對象時,該運(yùn)算符運(yùn)算的結(jié)果是true,否則是false。
(增)右移位(帶符號)操作符>>inta1=12>>1;//變量a1的取值為6inta2=-12>>2;//變量a2的取值為-3inta3=128>>2;//變量a3的取值為32inta4=129>>2;//變量a4的取值為32
(增)左移位操作符<<inta1=12<<1;//變量a1的取值為24inta2=-12<<2;//變量a2的取值為-48inta3=128<<2;//變量a3的取值為512inta4=129<<2;//變量a4的取值為516
(增)邏輯(不帶符號)右移位操作符>>>inta1=12>>>1;//變量a1的取值為6inta2=-12>>>2;//變量a2的取值為1073741821(增)條件運(yùn)算符(三目運(yùn)算符)Op1?Op2:Op3Op1為布爾型,當(dāng)Op1為true,表達(dá)式結(jié)果為Op2的值,否則為Op3的值例如:
2>1?3:4的值是3 1>2?3:4的值是42010-8-123§4.1.9運(yùn)算符綜述◆
Java的表達(dá)式就是用運(yùn)算符連接起來的符合Java規(guī)則的式子。◆運(yùn)算符的優(yōu)先級決定了表達(dá)式中運(yùn)算執(zhí)行的先后順序?!粼诰帉懗绦驎r盡量的使用括號()運(yùn)算符號來實現(xiàn)想要的運(yùn)算次序,以免產(chǎn)生難以閱讀或含糊不清的計算順序。◆運(yùn)算符的結(jié)合性決定了并列的相同級別運(yùn)算符的先后順序。
詳見教材P312010-8-124§4.2語句概述
Java里的語句可分為以下六類。1.方法調(diào)用語句。如:System.out.println("Hello");2.表達(dá)式語句表示式尾加上分號。比如賦值語句:x=23;3.復(fù)合語句可以用{}把一些語句括起來構(gòu)成復(fù)合語句,如:{z=123+x;System.out.println("Howareyou");}4.空語句。一個分號也是一條語句,稱做空語句。5.控制語句??刂普Z句分為條件分支語句、開關(guān)語句和循環(huán)語句。6.package語句和import語句。它們和類、對象有關(guān),將在第5章講解。2010-8-125§4.3if條件分支語句條件分支語句按著語法格式可細(xì)分為三種形式,if語句if-else語句
if-elseif-……-elseif-else
語句2010-8-126§4.3.1if語句
if語句是單條件分支語句,即根據(jù)一個條件來控制程序執(zhí)行的流程。if語句的語法格式:if(表達(dá)式){若干語句}
2010-8-127§4.3.2if-else語句
if-else語句是雙條件分支語句,即根據(jù)一個條件來控制程序執(zhí)行的流程。
if-else語句的語法格式:if(表達(dá)式){若干語句}else{若干語句}2010-8-128§4.3.3if-elseif-else語句
if-elseif-else語句是多條件分支語句,即根據(jù)多個條件來控制程序執(zhí)行的流程。
if-elseif-else語句的語法格式:if(表達(dá)式){若干語句}elseif(表達(dá)式){若干語句}……else{若干語句}publicclassSortNumber{voidsort(inta,intb,intc){intcount=0;inttemp=0;if(b<a){temp=a;a=b;b=temp;count++;System.out.println("排序的第"+count+"次操作結(jié)果:"+a+","+b+","+c);}if(c<a){temp=a;a=c;c=temp;count++;System.out.println("排序的第"+count+"次操作結(jié)果:"+a+","+b+","+c);}if(c<b){temp=b;b=c;c=temp;count++;System.out.println("排序的第"+count+"次操作結(jié)果:"+a+","+b+","+c);}if(count==0){System.out.println("排序的第"+count+"次操作結(jié)果:"+a+","+b+","+c);}}}importjava.util.Scanner;publicclassExample4_1{publicstaticvoidmain(Stringargs[]){Scannerreader=newScanner(System.in);System.out.println("輸入三個整數(shù),每輸入一個需回車確認(rèn)");intx=reader.nextInt();inty=reader.nextInt();intz=reader.nextInt();SortNumbernumber=newSortNumber();number.sort(x,y,z);}}2010-8-131§4.4switch開關(guān)語句
switch語句是單條件多分支的開關(guān)語句,它的一般格式定義如下(其中break語句是可選的):
switch(表達(dá)式){
case常量值1:若干個語句
break;case常量值2:若干個語句
break;...case常量值n:
若干個語句
break;default:
若干語句}例題4-2publicclassJudgeAward{voidgiveMess(intnumber){switch(number){case9:case131:case12:System.out.println(number+"是三等獎");break;case209:case596:case27:System.out.println(number+"是二等獎");break;case175:case316:case59:System.out.println(number+"是一等獎");break;default:System.out.println("未中獎");}}}importjava.util.Scanner;publicclassExample4_2{publicstaticvoidmain(Stringargs[]){Scannerreader=newScanner(System.in);System.out.println("輸入正整數(shù)回車確認(rèn)");intnumber=reader.nextInt();JudgeAwardjudge=newJudgeAward();judge.giveMess(number);}}2010-8-134§4.5循環(huán)語句§4.5.1for循環(huán)語句for語句的語法格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){若干語句}for語句的執(zhí)行規(guī)則是:
(1)計算“表達(dá)式1”,完成必要的初始化工作。(2)判斷“表達(dá)式2”的值,若“表達(dá)式2”的值為true,則進(jìn)行(3),否則進(jìn)行(4)。
(3)執(zhí)行循環(huán)體,然后計算“表達(dá)式3”,以便改變循環(huán)條件,進(jìn)行(2)。(4)結(jié)束for語句的執(zhí)行。例題4-3publicclassComputerSum{voidgiveSum(intnumber,intlength){if(number<=9&&number>=1){longsum=0,a=number,item=a,n=length,i=1;for(i=1;i<=n;i++){sum=sum+item;item=item*10+a;}System.out.println(sum);}else{System.out.println("請給出正確的數(shù)字");}}}publicclassExample4_3{publicstaticvoidmain(Stringargs[]){ComputerSumcomputer=newComputerSum();computer.giveSum(2,5);}}2010-8-136§4.5.2while循環(huán)while語句的語法格式:while(表達(dá)式){若干語句}
while語句的執(zhí)行規(guī)則是:
(1)計算表達(dá)式的值,如果該值是true時,就進(jìn)行(2),否則執(zhí)行(3)。
(2)執(zhí)行循環(huán)體,再進(jìn)行(1)。
(3)結(jié)束while語句的執(zhí)行。
2010-8-137§4.5.3do-while循環(huán)do-while語句的語法格式:do{若干語句}while(表達(dá)式);
do-
while語句的執(zhí)行規(guī)則是:
(1)執(zhí)行循環(huán)體,再進(jìn)行(2)。
(2)計算表達(dá)式的值,如果該值是true時,就進(jìn)行(1),否則執(zhí)行(3)。
(3)結(jié)束while語句的執(zhí)行。例4-4publicclassExample4_4{publicstaticvoidmain(Stringargs[]){doublesum=0,item=1;inti=1,n=20;while(i<=n){sum=sum+item;i=i+1;item=item*(1.0/i);}System.out.println("sum="+sum);}}2010-8-139§4.6break和continue語句
break和continue語句是用關(guān)鍵break或continue加上分號構(gòu)成的語句。
在循環(huán)體中可以使用break語句和continue語句。如果在某次循環(huán)中執(zhí)行了break語句,那么整個循環(huán)語句就結(jié)束。如果在某次循環(huán)中執(zhí)行了continue語句,那么本次循環(huán)就結(jié)束,即不再執(zhí)行本次循環(huán)中循環(huán)體中continue語句后面的語句,而轉(zhuǎn)入進(jìn)行下一次循環(huán)。例4-5
publicclassExample4_5{publicstaticvoidmain(Stringargs[]){for(charc='A';c<='Z';c++){switch(c){case'B':case'F':case'M':case'Q':case'T':case'W':continue;}System.out.print(c+"");}System.out.println("");longsum=0,i=1,max=1931,N=0;while(true){sum=sum+i;if(sum>max){N=i-1;break;}i++;}System.out.println("滿足1+2+...+n<="+max+"的最大整數(shù)n為"+N);}}2010-8-141§4.7數(shù)組數(shù)組是相同類型的變量按順序組成的一種復(fù)合數(shù)據(jù)類型,稱這些相同類型的變量為數(shù)組的元素或單元。數(shù)組通過數(shù)組名加索引來使用數(shù)組的元素。數(shù)組屬于引用型變量,創(chuàng)建數(shù)組需要經(jīng)過聲明數(shù)組為數(shù)組分配變量*引用型變量和傳值變量的區(qū)別數(shù)組之后介紹2010-8-142§4.7.1聲明數(shù)組聲明數(shù)組包括數(shù)組變量的名字(簡稱數(shù)組名)、數(shù)組的類型。聲明一維數(shù)組有下列兩種格式:數(shù)組的元素類型數(shù)組名[];數(shù)組的元素類型[]數(shù)組名;聲明二維數(shù)組有下列兩種格式:數(shù)組的元素類型數(shù)組名[][];數(shù)組的元素類型[][]數(shù)組名;例如:floatboy[];charcat[][];2010-8-143§4.7.2為數(shù)組分配元素聲明數(shù)組僅僅是給出了數(shù)組名字和元素的數(shù)據(jù)類型,要想真正的使用數(shù)組還必須為它分配內(nèi)存空間,即創(chuàng)建數(shù)組。在為數(shù)組分配內(nèi)存空間時必須指明數(shù)組的長度。為一維數(shù)組分配內(nèi)存空間的格式如下:數(shù)組名字=new數(shù)組元素的類型[數(shù)組元素的個數(shù)];例如:boy=newfloat[4];
Boy存放了首地址二維數(shù)組的分配方式第二維的長度相同inttwoD[][]=newint[2][2];第二維的長度不同:inttwoD[][]=newint[2][];twoD[0]=newint[1];twoD[1]=newint[3]2010-8-145§4.7.3數(shù)組元素的使用一維數(shù)組通過索引符訪問自己的元素,如boy[0],boy[1]等。需要注意的是索引從0開始。二維數(shù)組也通過索引符訪問自己的元素,如a[0][1],a[1][2]等;需要注意的是索引從0開始。
2010-8-146§4.7.4length的使用數(shù)組的元素的個數(shù)稱作數(shù)組的長度。對于一維數(shù)組,“數(shù)組名.length”的值就是數(shù)組中元素的個數(shù)。對于二維數(shù)組“數(shù)組名.length”的值是它含有的一維數(shù)組的個數(shù)。
floata[]=newfloat[12]intb[][]=newint[3][6]a.length?b.length?b的二維長度應(yīng)該如何確定?2010-8-147§4.7.5數(shù)組的初始化創(chuàng)建數(shù)組后,系統(tǒng)會給數(shù)組的每個元素一個默認(rèn)的值,如,float型是0.0。在聲明數(shù)組的同時也可以給數(shù)組的元素一個初始值,如:floatboy[]={21.3f,23.89f,2.0f,23f,778.98f};等同于另外一種初始化方式?也可以直接用若干個一維數(shù)組初始化一個二維數(shù)組,這些一維數(shù)組的長度不盡相同,例如:inta[][]={{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1}};a的維數(shù)和長度?2010-8-148§4.7.6數(shù)組的引用數(shù)組屬于引用型變量,因此兩個相同類型的數(shù)組如果具有相同的引用,它們就有完全相同的元素。例如,對于inta[]={1,2,3},b[]={4,5};數(shù)組變量a和b分別存放著引用0x35ce36和0x757aef。
如果使用了下列賦值語句(a和b的類型必須相同)a=b;那么,a中存放的引用和b的相同,這時系統(tǒng)將釋放最初分配給數(shù)組a的元素,使得a的元素和b的元素相同。publicclassExample4_6{publicstaticvoidmain(Stringargs[]){inta[]={1,2,3,4};intb[]={100,200,300};System.out.println("數(shù)組a的元素個數(shù)="+a.length
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)智化背景下的教育治理變革需求
- 2024星級酒店會議室租賃協(xié)議模板
- 2024年房產(chǎn)交易協(xié)議詳細(xì)登記本
- 2024砂石料海上運(yùn)輸及裝卸協(xié)議條款
- 2024專業(yè)借款利息協(xié)議范例
- 2024年建筑行業(yè)材料租賃協(xié)議細(xì)則
- 2024年酒店服務(wù)單位協(xié)議格式
- 2024年空調(diào)設(shè)備租賃服務(wù)協(xié)議精簡
- 2024服務(wù)項目戰(zhàn)略合作框架協(xié)議
- 廚具供應(yīng)商2024年銷售代理協(xié)議
- 稀土熒光探針檢測多巴胺及類似物.
- 完整版幸福感指數(shù)測量量表
- 管理-制度萬科房地產(chǎn)應(yīng)收帳款管理辦法
- 5w1h分析法講義ppt課件
- 動穩(wěn)定和熱穩(wěn)定的計算
- 上海市高等學(xué)校依法治校創(chuàng)建指標(biāo)體系
- 組織架構(gòu)圖PPT課件
- 技工英語教案(共46頁)
- DDL法在英語寫作中的應(yīng)用研究
- 關(guān)于新冠肺炎污水應(yīng)急監(jiān)測的技術(shù)探討
- 北信源-終端準(zhǔn)入控制系統(tǒng)
評論
0/150
提交評論