第3章運(yùn)算符、表達(dá)式和語(yǔ)句_第1頁(yè)
第3章運(yùn)算符、表達(dá)式和語(yǔ)句_第2頁(yè)
第3章運(yùn)算符、表達(dá)式和語(yǔ)句_第3頁(yè)
第3章運(yùn)算符、表達(dá)式和語(yǔ)句_第4頁(yè)
第3章運(yùn)算符、表達(dá)式和語(yǔ)句_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章運(yùn)算符、表達(dá)式和語(yǔ)句2主要內(nèi)容3.1運(yùn)算符與表達(dá)式3.2分支語(yǔ)句3.3循環(huán)語(yǔ)句3運(yùn)算符與表達(dá)式運(yùn)算符:算術(shù)運(yùn)算符、比較運(yùn)算符、條件運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符和自增自減運(yùn)算符。表達(dá)式:4算術(shù)運(yùn)算符算術(shù)運(yùn)算符包括:+,-,*,/,++,--,%沒有指數(shù)運(yùn)算

Math.pow(2.0,3.0);//2.03.0整數(shù)除法:截去余數(shù)

7/5結(jié)果為1取模:返回余數(shù)

7%5結(jié)果為2“+”還可以做字符串的連接

System.out.println(“abc”+6);5例如:publicclassTest{publicstaticvoidmain(String[]agrs){inti=5; System.out.println("i="+i); System.out.println("i++:"+(i++)+"i="+i); System.out.println("++i:"+(++i)+"i="+i);}}i=5i++:5i=6++i:7i=76問題?-7/5 =-7%5 =7%-5 =15.5%5 =-1-220.5注意:在取模運(yùn)算中,運(yùn)算結(jié)果的符號(hào)與第一個(gè)操作數(shù)的符號(hào)相同浮點(diǎn)數(shù)可以進(jìn)行取模運(yùn)算7關(guān)系運(yùn)算符六個(gè)關(guān)系運(yùn)算符:<、>、<=、>=、==和!=例如: 1>2;//false 3.5!=1;//true 51.5>=23.0; //true 540<=654; //true 24==3*8;//true

booleantest1=(10<10);//test1=false;8注意事項(xiàng)<、>、<=和>=只能用來比較兩個(gè)數(shù)值類型數(shù)據(jù)的大小不能用于String、boolean或其他類型9條件運(yùn)算符條件表達(dá)式

e1?e2:e3其中:e1為boolean類型,e2與e3的類型相同執(zhí)行順序:若e1的值為true,e2的值為最終結(jié)果若e1的值為false,e3的值為最終結(jié)果例如:y=x>=0?x:-x//求|x|max=x>y?x:y//求x,y的較大者10邏輯運(yùn)算符六個(gè)布爾邏輯運(yùn)算符:

& (邏輯與AND)

| (邏輯或OR)

^ (邏輯異或XOR)!

(邏輯非NOT)單目運(yùn)算符,即只有一個(gè)操作數(shù)

&&(條件與AND)|| (條件或OR)11短路規(guī)則(&&和||)如果從第一個(gè)操作數(shù)可以推斷出表達(dá)式結(jié)果,就不再計(jì)算第二個(gè)操作數(shù)例如:

if((x==2)&&(y!=2)) System.out.println("兩個(gè)條件都為true.");

if((x==2)||(y!=2)) System.out.println(“一個(gè)條件為true.");

12邏輯運(yùn)算(&和|

)可做位運(yùn)算也可做邏輯運(yùn)算在邏輯運(yùn)算中:兩個(gè)操作數(shù)均會(huì)被運(yùn)算(即不采用短路規(guī)則)用不用短路規(guī)則,副作用不同13邏輯運(yùn)算符

booleanb=x>y&x++==y--;//x為4,y為4,b為false。

例如:intx=3,y=5; booleanb=x>y&&x++==y--;

//x為3,y為5,b為false。

短路14賦值運(yùn)算符賦值類運(yùn)算符包括:=、+=、-=、*=、/=、&=、|=、%=、<<=、>>=和>>>=op1=op1二元運(yùn)算符op2;等價(jià)于op1二元運(yùn)算符=op2;例如:a=a+b;等價(jià)于a+=b;15publicclassc2_7{publicstaticvoidmain(Stringargs[]){intx,y,z;x=1;y=2;z=3;x+=y;y%=x;z/=x;System.out.print("\tx="+(x+=y));System.out.print("\ty="+y);System.out.println("\tz="+z);}}運(yùn)行結(jié)果是:x=5 y=2z=1賦值運(yùn)算符16

運(yùn)算符優(yōu)先級(jí)表

運(yùn)算符優(yōu)先級(jí)表順序運(yùn)算符1括號(hào),如

()和[]3一元運(yùn)算符,如

-、++、--和

!3算術(shù)運(yùn)算符,如*、/、%、+和

-4關(guān)系運(yùn)算符,如

>、>=、<、<=、==和

!=5邏輯運(yùn)算符,如

&、^、|、&&、||6條件運(yùn)算符和賦值運(yùn)算符,如

?:、=、*=、/=、+=和

-=運(yùn)算符與表達(dá)式17算法的基本控制結(jié)構(gòu)if/elseif/elsewhilefordowhileswitchcasebreakcontinue

return18控制結(jié)構(gòu)順序結(jié)構(gòu)Java最基本的結(jié)構(gòu)選擇結(jié)構(gòu)三種類型:if、if/else和switch

循環(huán)結(jié)構(gòu)三種類型:for、while和do/while19if語(yǔ)句if語(yǔ)句的格式是:if(布爾表達(dá)式)

語(yǔ)句或if(布爾表達(dá)式){

一條或多條語(yǔ)句}例如

if

(grade>=60)

System.out.println("Passed");20if-else語(yǔ)句if-else語(yǔ)句的格式是:if(布爾表達(dá)式)

語(yǔ)句1或語(yǔ)句塊1else

語(yǔ)句2或語(yǔ)句塊2例如:if

(grade>=60)System.out.println("Passed!");elseSystem.out.println("Failed!");作業(yè)1、有一函數(shù):從鍵盤輸入一個(gè)x值,輸出y值。2122多分支選擇結(jié)構(gòu)switch語(yǔ)句switch語(yǔ)句的形式是:switch(表達(dá)式){case

值1:

語(yǔ)句組1

break;case

值2:

語(yǔ)句組2

break;……case

值n:

語(yǔ)句組n

break;default:

語(yǔ)句組(n+1)}23多分支選擇結(jié)構(gòu)switch語(yǔ)句說明:switch后面的表達(dá)式的類型可以是byte、char、short和int(不允許是浮點(diǎn)數(shù)類型和long型)。case后面的值1、值2、…、值n是與表達(dá)式類型相同的常量,但它們之間的值應(yīng)各不相同,否則就會(huì)出現(xiàn)相互矛盾的情況。case后面的語(yǔ)句塊可以不用花括號(hào)括起。default語(yǔ)句可以省去不要。當(dāng)表達(dá)式的值與某個(gè)case后面的常量值相等時(shí),就執(zhí)行此case后面的語(yǔ)句塊。若去掉break語(yǔ)句,則執(zhí)行完第一個(gè)匹配case后的語(yǔ)句塊后,會(huì)繼續(xù)執(zhí)行其余case后的語(yǔ)句塊,而不管這些語(yǔ)句塊前的case值是否匹配。24switch語(yǔ)句中使用

breakcharmyGrade=‘A’;switch(MyGrade){case’A’:MyScore=5;case‘B’:MyScore=4;case’C’:MyScore=3;default:MyScore=0;}MyGrade的值為‘A’,執(zhí)行完switch語(yǔ)句后,MyScore的值被賦成0charmyGrade=‘A’;switch(MyGrade){case’A’:MyScore=5;break;case’B’:MyScore=4;break;case’C’:MyScore=3;break;

default:MyScore=0;}MyGrade的值為‘A’,執(zhí)行完switch語(yǔ)句后,MyScore的值被賦成5charmyGrade=‘A’;switch(MyGrade) {case’A’:case’B’:case’C’:MyScore=1;//及格

break;default:MyScore=0;//不及格}練習(xí)寫程序,使用switch語(yǔ)句完成將輸入的整型數(shù)字1—7轉(zhuǎn)換為“星期一”、“星期二”、…“星期日”,當(dāng)輸入數(shù)字不在1—7之間,輸出錯(cuò)誤信息。26importjava.util.Scanner;publicclassSwitchT{publicstaticvoidmain(String[]args) {System.out.print("請(qǐng)輸入大于等于1小于等于7的整數(shù)數(shù)字:");Scannerinput=newScanner(System.in);intday=input.nextInt();System.out.println();switch(day){ case1:System.out.println("星期一"); break; case2:System.out.println("星期二"); break; case3:System.out.println("星期三"); break; case4:System.out.println("星期四"); break; case5:System.out.println("星期五"); break; case6:System.out.println("星期六"); break; case7:System.out.println("星期日"); break; default:System.out.println("對(duì)不起你輸入的整數(shù)數(shù)字不在1到7之間!");}}}27循環(huán)語(yǔ)句

循環(huán)語(yǔ)句特點(diǎn)for語(yǔ)句計(jì)數(shù)型循環(huán)語(yǔ)句,提前指定循環(huán)的次數(shù),適用于循環(huán)次數(shù)已知的情況while語(yǔ)句指定循環(huán)結(jié)束條件,適用于循環(huán)次數(shù)未知的情況do-while語(yǔ)句與while基本相同,但它的循環(huán)體至少會(huì)執(zhí)行一次,適用于循環(huán)次數(shù)未知的情況表

各種循環(huán)語(yǔ)句28for循環(huán)語(yǔ)句格式:

for

(表達(dá)式1;表達(dá)式2;表達(dá)式3)

語(yǔ)句或語(yǔ)句塊

式2bodyfalsetrue式3式129while循環(huán)語(yǔ)句while循環(huán)語(yǔ)句格式為:while(布爾表達(dá)式)

語(yǔ)句或語(yǔ)句塊當(dāng)條件(布爾表達(dá)式)為true

,則不斷地執(zhí)行語(yǔ)句或語(yǔ)句塊“while”循環(huán)中止條件是布爾表達(dá)式變?yōu)閒alse如果布爾表達(dá)式一開始就為false,則不執(zhí)行循環(huán)體布爾式語(yǔ)句falsetrue30while循環(huán)語(yǔ)句將下面格式的for語(yǔ)句轉(zhuǎn)換為while語(yǔ)句:

for

(表達(dá)式1;表達(dá)式2;表達(dá)式3)

語(yǔ)句或語(yǔ)句塊

轉(zhuǎn)換后:

表達(dá)式1;

while

(表達(dá)式2)

{

語(yǔ)句或語(yǔ)句塊

表達(dá)式3;

}31do/while循環(huán)語(yǔ)句先執(zhí)行,后判定條件即循規(guī)環(huán)體至少執(zhí)行1次格式do{

語(yǔ)句或語(yǔ)句塊}while(布爾表達(dá)式);好的編程風(fēng)格:總是以“{}”引導(dǎo)循環(huán)體,即使語(yǔ)法上并不需要布爾式語(yǔ)句falsetrue作業(yè)5、編寫打印下列圖形的程序:3233跳轉(zhuǎn)語(yǔ)句用于改變程序控制流:continue語(yǔ)句break語(yǔ)句return循環(huán)

break體循環(huán)條件true34break語(yǔ)句

break語(yǔ)句在switch語(yǔ)句中,用來終止一個(gè)語(yǔ)句序列用來退出一個(gè)循環(huán)用來實(shí)現(xiàn)goto語(yǔ)句所特有的一些功能,實(shí)現(xiàn)使程序的流程從一個(gè)語(yǔ)句塊內(nèi)部跳轉(zhuǎn)出來break語(yǔ)句的語(yǔ)法格式:break;

break標(biāo)號(hào);循環(huán)

break體循環(huán)條件true作業(yè)2、編寫一Java程序,查找1~100之間的素?cái)?shù)并將運(yùn)行結(jié)果輸出。3536break語(yǔ)句break標(biāo)號(hào);標(biāo)號(hào)名:定義在程序中外層循環(huán)語(yǔ)句的前面,用來標(biāo)志這個(gè)循環(huán)結(jié)構(gòu),或放在一個(gè)語(yǔ)句塊的前面來標(biāo)識(shí)一個(gè)語(yǔ)句塊。37程序中可用break標(biāo)號(hào);來跳出該代碼塊,轉(zhuǎn)到該塊后的第一個(gè)語(yǔ)句去執(zhí)行,如:a:{……//a代碼塊 b:{……//b塊 c:{……//c塊 breakb; ……//這段代碼不會(huì)被執(zhí)行 }//c結(jié)束 ……//這段也不會(huì)被執(zhí)行}//b結(jié)束……//從此開始執(zhí)行}//a結(jié)束38break語(yǔ)句publicclassJ_Break{publicstaticvoidmain(Stringargs[]){inti=0;

aBreakBlock:{System.out.println("在break語(yǔ)句之前");if(i<=0)breakaBreakBlock;System.out.println("在if和break語(yǔ)句之后");}

System.out.println("在aBreakBlock語(yǔ)句塊之后");}}在break語(yǔ)句之前在aBreakBlock語(yǔ)句塊之后39publicclassTest1{publicstaticvoidmain(String[]args){booleant=true;first:{ second:{ third:{System.out.println("1"); if(t)breaksecond; System.out.println("2");} System.out.println("3");} System.out.println("4");} }}運(yùn)行結(jié)果:1440continue語(yǔ)句

continue語(yǔ)句只能出現(xiàn)在循環(huán)體中其作用是結(jié)束本輪循環(huán),接著開始判斷決定是否執(zhí)行下一輪循環(huán)。continue語(yǔ)句的語(yǔ)法格式:continue;41continue語(yǔ)句continue語(yǔ)句,它的作用是終止當(dāng)前這一輪的循環(huán),跳過本輪剩余的語(yǔ)句,直接進(jìn)入當(dāng)前循環(huán)的下一輪。在for循環(huán)中,不帶標(biāo)號(hào)的continue語(yǔ)句會(huì)跳轉(zhuǎn)至表達(dá)式3,計(jì)算修改循環(huán)變量后再判斷循環(huán)條件。在while或do…while循環(huán)中,不帶標(biāo)號(hào)的continue語(yǔ)句會(huì)使流程直接跳轉(zhuǎn)至條件表達(dá)式

循……環(huán)

continue體……循環(huán)條件true42continue語(yǔ)句publicclassBreakT{ publicstaticvoidmain(String[]args){ inti,j; for(i=3;i<=40;i++){ for(j=2;j<=i/2;j++){ if(i%j==0)

continue;} if(j>i/2) {System.out.println(""+j+"是素?cái)?shù)");}} }}2是素?cái)?shù)3是素?cái)?shù)3是素?cái)?shù)4是素?cái)?shù)4是素?cái)?shù)5是素?cái)?shù)5是素?cái)?shù)6是素?cái)?shù)6是素?cái)?shù)7是素?cái)?shù)7是素?cái)?shù)8是素?cái)?shù)8是素?cái)?shù)9是素?cái)?shù)9是素?cái)?shù)10是素?cái)?shù)10是素?cái)?shù)11是素?cái)?shù)11是素?cái)?shù)12是素?cái)?shù)12是素?cái)?shù)……作業(yè)3、P42(2)4、P42(3)

6、寫一個(gè)程序,計(jì)算s=1-1/3+1/5-1/7+1/9+…的前10000項(xiàng)之和。4344數(shù)組由相同類型的若干項(xiàng)數(shù)據(jù)組成例如:publicstaticvoidmain(Stringargs[])其中args是String類型的數(shù)組占用連續(xù)的內(nèi)存地址數(shù)組的靜態(tài)性一旦創(chuàng)建就不能修改數(shù)組的長(zhǎng)度Java提供了避免訪問數(shù)組元素越界的機(jī)制45數(shù)組聲明一維數(shù)組變量的聲明格式有如下兩種:數(shù)組元素的數(shù)據(jù)類型變量名[];數(shù)組元素的數(shù)據(jù)類型[]變量名;示例:int[]c;

String[]names;

int

c[];

String

names[];

46示例int[]c=new

int[12];c

是數(shù)組名如何獲得數(shù)組的長(zhǎng)度?c.length第一個(gè)數(shù)組元素的下標(biāo)為0

使用數(shù)組可以通過數(shù)組名與下標(biāo)每個(gè)數(shù)組元素類似于普通的變量c[

0

]=

3;c[

0

]+=

5;-4560721543-89062-3164537812c[1]c[2]c[4]c[3]c[5]c[6]c[7]c[8]c[9]c[10]c[11]c[0]c.length47下標(biāo)有時(shí)也稱為索引必須是整數(shù)或整數(shù)表達(dá)式,例如:c[11]示例:含有運(yùn)算符的下標(biāo)表達(dá)式:

if(x==3) t=(c[5-2]==c[3])&&(c[x]==c[3]);

//t=true48數(shù)組的創(chuàng)建利用new來為數(shù)組型變量分配內(nèi)存空間示例:int[]c;

//聲明c=

new

int[12];

//創(chuàng)建對(duì)象,并分配內(nèi)存聲明時(shí)不能指定數(shù)組的大小上面的兩個(gè)語(yǔ)句可以簡(jiǎn)化成一個(gè)語(yǔ)句int[]c=

new

int[12];數(shù)組創(chuàng)建后,系統(tǒng)自動(dòng)為數(shù)組元素賦初值整型:0實(shí)型:0.0f或0.0d字符:‘\0’類對(duì)象:null49通過初始化語(yǔ)句創(chuàng)建數(shù)組Java語(yǔ)言允許通過數(shù)組的初始化語(yǔ)句創(chuàng)建數(shù)組簡(jiǎn)單類型:聲明時(shí)自動(dòng)分配空間

int[]n={10,20,30,40,50};上面語(yǔ)句創(chuàng)建了一個(gè)含有五個(gè)元素的數(shù)組下標(biāo)值分別為0,1,2,3,4這時(shí)不需要運(yùn)算符new引用類型:聲明時(shí)不分配空間,需要利用new完成空間分配(String隱含分配)

String[]str={“Fortran”,”QBasic”,”Pascal”};賦值操作是地址的拷貝StringstringArrar[];//定義一個(gè)String類型的數(shù)組變量StringArray=newString[3];//給數(shù)組stringArray分配3個(gè)元素空間StringArray[0]=newString(“how”);//初始化各數(shù)組元素StringArray[1]=newString(“are”);StringArray[2]=newString(“you”);50數(shù)組publicclassArrayT{ publicstaticvoidmain(String[]args){ inti; intx[]={1,2,3,4,5,6,7,8,9,10}; for(i=0;i<10;i++) { System.out.println("x"+i+"is"+x[i]); } }}練習(xí)寫程序完成:定義數(shù)組,長(zhǎng)度為10從鍵盤為數(shù)組進(jìn)行初始化為數(shù)組排序輸出數(shù)組52publicclassArraySort{publicstaticvoidmain(String[]args){finalintN=10;Scannerr=newScanner(System.in);inta[]=newint[N];inti,t,j;booleantag;for(i=0;i<a.length;i++){a[i]=r.nextInt();}System.out.println("排序前:");for(i=0;i<N;i++){System.out.print(a[i]+"");}System.out.println();for(i=0;i<N-1;i++){tag=true;for(j=0;j<N-i-1;j++){if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;tag=false;}}if(tag)break;}System.out.println("排序后:"+m);for(i=0;i<N;i++){System.out.print(a[i]+"");}}}53Arrays.sort()publicstaticvoidsort(int[]

a)對(duì)指定的int型數(shù)組按數(shù)字升序進(jìn)行排序。例Arrays.sort(a)54Arrays.sort()importjava.util.*;publicclassTestArraySort{ publicstaticvoidmain(String[]args) { inta[]={2,45,1,-6,78,67,90}; System.out.println("輸出排序前結(jié)果:"); for(inti=0;i<a.length;i++){ System.out.print(""+a[i]); }Arrays.sort(a); System.out.println("\n"+"輸出排序后結(jié)果:"); for(inti=0;i<a.length;i++){ System.out.print(""+a[i]); }}}作業(yè)7、在一個(gè)長(zhǎng)度為10的整型數(shù)組中,最大的與第一個(gè)元素交換,最小的與最后一個(gè)元素交換,輸出數(shù)組。8、有一個(gè)已經(jīng)排好序的數(shù)組?,F(xiàn)輸入一個(gè)數(shù),要求按原來的規(guī)律將它插入數(shù)組中。(插入位置可順序查找和折半查找)5556System.arraycopy()publicstaticvoidarraycopy(Object

src,int

srcPos,Object

dest,int

destPos,int

length)將源數(shù)組src中從下標(biāo)srcPos開始的length個(gè)元素復(fù)制到目標(biāo)數(shù)組dest,在目標(biāo)數(shù)組的下標(biāo)為srcPos位置開始存儲(chǔ)。如System.arraycopy(scoure,0,dest,0,x)57System.arraycopy()publicclassArrayCopy{ publicstaticvoidmain(String[]args) { inta[]={5,6,32,12}; intb[]={41,52,3,44,56}; System.arraycopy(a,0,b,0,3); for(inti=0;i<a.length;i++) System.out.print(""+a[i]); System.out.println(); for(intj=0;j<b.length;j++) System.out.print(""+b[j]); System.out.println();} }作業(yè)9、某個(gè)公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù),在傳遞過程中是加密的,加密規(guī)則如下:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換。輸入一個(gè)四位

溫馨提示

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

評(píng)論

0/150

提交評(píng)論