第4次運(yùn)算符與表達(dá)式、流程控制語句_第1頁
第4次運(yùn)算符與表達(dá)式、流程控制語句_第2頁
第4次運(yùn)算符與表達(dá)式、流程控制語句_第3頁
第4次運(yùn)算符與表達(dá)式、流程控制語句_第4頁
第4次運(yùn)算符與表達(dá)式、流程控制語句_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

12.8運(yùn)算符與表達(dá)式算術(shù)運(yùn)算:+、-、*、/、%、++、--邏輯運(yùn)算:&、|、!、^、&&、||關(guān)系運(yùn)算:==、!=、>、<、>=、<=位運(yùn)算:~、&、|、^、>>、<<、>>>其他運(yùn)算:?:、賦值運(yùn)算符、()、[]、new檢測某個對象是否屬于某個類

instanceof(對象)算術(shù)運(yùn)算符與算術(shù)表達(dá)式雙目運(yùn)算符:有兩個操作數(shù)的運(yùn)算符

+-*/%單目運(yùn)算符:只有一個操作數(shù)的運(yùn)算符+-++--2算術(shù)運(yùn)算符說明操作含義和基本用法與C語言中相應(yīng)的運(yùn)算符相同,但有一些特別之處。(1)5個雙目運(yùn)算符的運(yùn)算對象類型可以是byte、short、int、long、float、double和char。%的運(yùn)算對象可以是整型可以是浮點(diǎn)型,既可以是正數(shù)也可以是負(fù)數(shù),運(yùn)算結(jié)果總是與被除數(shù)的符號一致。(2)

整數(shù)被0整除或求余數(shù)非法操作,拋出ArithemticException。3算術(shù)運(yùn)算符說明(3)運(yùn)算結(jié)果類型:如果參與運(yùn)算的兩個運(yùn)算對象屬于同一個類型,則結(jié)果也是這種類型。如果兩個運(yùn)算對象的類型都是整型byte、short、int、long)或者浮點(diǎn)型,則計(jì)算結(jié)果為取值范圍較大那種類型。例如:4//’3’的Unicode碼為51;inta=1;longb=2L;charc='3';doubled=4.0;floatf=5.0f;System.out.print((a+c)+"\n"+(b+c)+"\n"+(c+d)+"\n"+(a+f));如果參與/運(yùn)算的兩個操作對象都是整數(shù)型,則運(yùn)算結(jié)果為?如果想得到小數(shù)商值,如何操作?整數(shù)將其中一個操作數(shù)強(qiáng)制轉(zhuǎn)換為浮點(diǎn)型算術(shù)運(yùn)算符說明(4)+的運(yùn)算對象類型可以是String,它的操作含義是將兩個字符串連接,如果一個運(yùn)算對象為String,另一個運(yùn)算對象為其他基本類型,則會自動地將這個運(yùn)算對象打包成字符串,然后再進(jìn)行字符串的連接。例如:System.out.println(“10+6*12=“+(10+6*12));System.out.println("10+6*12="+10+6*12);510+6*12=8210+6*12=1072算術(shù)運(yùn)算符說明(5)Java中++和--的運(yùn)算對象可以是整型也可以是浮點(diǎn)型(與C語言不同),但只能是變量;6doublea=5.0,b;System.out.println(a--+"\n"+--a+"\n"+(b=a++)+"\n"+(b=++a));算術(shù)運(yùn)算符的優(yōu)先級7順序分組操作符規(guī)則高

低子表達(dá)式()若有多重括號,首先計(jì)算最里面的子表達(dá)式的值。若同一級有多對括號,則從左到右計(jì)算。單目操作符++,--求單目變量自增自減值。乘法操作符*,/,%若一個表達(dá)式中有多個乘法操作符,那么從左到右計(jì)算。加法操作符+,-若一個表達(dá)式中有多個加法操作符,那么從左到右計(jì)算8賦值運(yùn)算符與賦值表達(dá)式分為簡單賦值和復(fù)合賦值,共12種;賦值運(yùn)算滿足右結(jié)合性;例如:inta=3,b=2;a=b=20;a和b最終的值為?簡單賦值號左側(cè)只能是變量、數(shù)組元素、對象或?qū)ο蟮某蓡T變量,通過賦值運(yùn)算改變他們原有的值;賦值運(yùn)算符與賦值表達(dá)式簡單賦值運(yùn)算符

當(dāng)賦值運(yùn)算符左側(cè)數(shù)據(jù)T1與其右側(cè)數(shù)據(jù)T2類型不相同,且不是boolean類型;(1)T1數(shù)據(jù)類型的位數(shù)>T2數(shù)據(jù)類型的位數(shù),可直接賦值,結(jié)果以T1類型存儲;詳見P46表2-8。(2)

T1數(shù)據(jù)類型的位數(shù)<T2數(shù)據(jù)類型的位數(shù),一般需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,例如:

intintData=(int)9876543210L;但需注意,long

類型數(shù)據(jù)可直接賦值給float的情況。(3)T1和T2類型位數(shù)相等的情況:int可直接賦值給float類型,long可直接賦值double,但可能會造成有效數(shù)字的損失;相反則不行,也需要強(qiáng)制類型轉(zhuǎn)換。9賦值符號兩側(cè)數(shù)據(jù)類型不同時(shí),可能會發(fā)生自動數(shù)據(jù)類型,否則需要強(qiáng)制類型轉(zhuǎn)換。longb=123;floatf=123.4;

doubled=123.4;floatf=123;10賦值運(yùn)算符與賦值表達(dá)式×√√√賦值運(yùn)算符與賦值表達(dá)式賦值符號兩側(cè)數(shù)據(jù)類型不同時(shí),有時(shí)會發(fā)生自動數(shù)據(jù)類型,否則需要強(qiáng)制類型轉(zhuǎn)換。整數(shù)類型中取值范圍較小的變量或直接量可以直接賦值(隱式轉(zhuǎn)換)給取值范圍較大的變量。相反地,數(shù)據(jù)類型取值范圍較大的變量或直接量不能直接賦值給取值范圍較小的變量,需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換(顯式轉(zhuǎn)換)。浮點(diǎn)數(shù)類型中取值范圍較小的變量或直接量可以直接賦值(隱式轉(zhuǎn)換)給取值范圍較大的變量。相反地,數(shù)據(jù)類型取值范圍較大的變量或直接量不能直接賦值給取值范圍較小的變量,需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換(顯式轉(zhuǎn)換)。整數(shù)類型可以直接賦值給浮點(diǎn)數(shù)類型(隱式轉(zhuǎn)換),相反需要強(qiáng)制類型轉(zhuǎn)換(顯式轉(zhuǎn)換)。賦值運(yùn)算符與賦值表達(dá)式賦值符號兩側(cè)數(shù)據(jù)類型不同時(shí),有時(shí)會發(fā)生自動數(shù)據(jù)類型,否則需要強(qiáng)制類型轉(zhuǎn)換。自動類型轉(zhuǎn)換如下:復(fù)合賦值運(yùn)算符:賦值符號左側(cè)的變量、數(shù)組元素或?qū)ο蟮某蓡T變量作為右側(cè)表達(dá)式的因子參加運(yùn)算。例:假設(shè)定義inta=2;a+=10;

a+=(a+5)*10;

a%=3;注意:賦值符號左側(cè)不能是對象引用(即對象名)。13賦值運(yùn)算符與賦值表達(dá)式關(guān)系運(yùn)算符與關(guān)系表達(dá)式Java中提供了6個關(guān)系運(yùn)算符:<,<=,>,>=,==,!=;操作對象:只能是數(shù)值類型和char類型;計(jì)算結(jié)果:boolean類型;關(guān)系表達(dá)式:含有關(guān)系運(yùn)算符且計(jì)算結(jié)果為boolean類型的表達(dá)式;例如:inta=19,b=89;System.out.println(“(a+b)<100:“+((a+b)<100));14(a+b)<100:false邏輯運(yùn)算符與邏輯表達(dá)式Java中提供了6個邏輯運(yùn)算符:&,&&,|,||,!,^運(yùn)算對象:只能是boolean類型的變量或表達(dá)式;如:(x<-100)||(x>100)計(jì)算結(jié)果:boolean類型;短路運(yùn)算與非短路運(yùn)算的區(qū)別:

例如:(x<0)&&(y++<0)

若x=y=1,運(yùn)算結(jié)束后,表達(dá)式結(jié)果為false,y=1;

若x=y=-1,運(yùn)算結(jié)束后,表達(dá)式結(jié)果為true,y=0;

例如:(x<0)&(y++<0)

若x=y=1,運(yùn)算結(jié)束后,表達(dá)式結(jié)果為false,y=2;

若x=y=-1,運(yùn)算結(jié)束后,表達(dá)式結(jié)果為true,y=0;邏輯表達(dá)式:含有邏輯運(yùn)算符且計(jì)算結(jié)果為boolean類型的表達(dá)式;15位運(yùn)算符Java中提供了兩類位運(yùn)算符。按位邏輯操作:&,|,~,^例:bytea=106,flags=0x0f;

a對應(yīng)的二進(jìn)制表示形式為:01101010;flag對應(yīng)的二進(jìn)制表示形式為:00001111;a&flag結(jié)果為:00001010; a|flag結(jié)果為:01101111;

~a結(jié)果為:10010101;a^flag結(jié)果為:01100101;16位運(yùn)算符注意1:&,|,~,^以上運(yùn)算符即是位運(yùn)算符又是邏輯運(yùn)算符。當(dāng)運(yùn)算對象為整型作按位邏輯運(yùn)算,當(dāng)運(yùn)算對象為布爾型時(shí),作邏輯運(yùn)算。注意2:在進(jìn)行按位操作時(shí),若兩個運(yùn)算對象所對應(yīng)的二進(jìn)制位數(shù)不同,則首先將占二進(jìn)制位數(shù)少的數(shù)值進(jìn)行轉(zhuǎn)換,使其與另一個占二進(jìn)制位數(shù)較多的運(yùn)算對象的位數(shù)一致,然后再進(jìn)行運(yùn)算。17位運(yùn)算符Java中提供了兩類位運(yùn)算符。移位操作(雙目運(yùn)算符):<<,>>,>>>例:byteb=-50;b對應(yīng)的二進(jìn)制表示形式為:11001110; b<<1:10011100;

b>>2:11110011; b>>>2:00110011;

問:實(shí)現(xiàn)乘以2的N次方應(yīng)用什么運(yùn)算,除以呢?

18運(yùn)算符的優(yōu)先級運(yùn)算符的優(yōu)先級決定了表達(dá)式中不同運(yùn)算執(zhí)行的先后次序。優(yōu)先級高的先進(jìn)行運(yùn)算,優(yōu)先級低的后進(jìn)行運(yùn)算。在優(yōu)先級相同的情況下,由結(jié)合性決定運(yùn)算順序。最基本的規(guī)律是:域和分組運(yùn)算優(yōu)先級最高,接下來依次是單目運(yùn)算,雙目運(yùn)算,三目運(yùn)算,賦值運(yùn)算的優(yōu)先級最低。19運(yùn)算符的優(yōu)先級20算符描述優(yōu)先級結(jié)合性.

[]

()域運(yùn)算,數(shù)組下標(biāo),分組括號1最高自左至右++

--

-

!

~

單目運(yùn)算2單目右/左new

(type)分配空間,強(qiáng)制類型轉(zhuǎn)換3自右至左*

/

%算術(shù)乘、除、求余運(yùn)算4雙目

自左至右(左結(jié)合性)+

-算術(shù)加減運(yùn)算5<<

>>

>>>位運(yùn)算6<

<=

>

>=小于/小于等于/大于/大于等于7==

!=相等,不等8&按位與9^按位異或10|按位或11&&邏輯與12||邏輯或13?:條件運(yùn)算符14三目

自右至左(右結(jié)合性)=

*=

/=

%=

+=-=

<<=

>>=

>>>=

&=

^=

|=賦值運(yùn)算15賦值最低課堂練習(xí)1.表達(dá)式(int)6.5/7.5*3的值的類型為()A.shortB.intC.doubleD.float2.下面語句輸出的結(jié)果為()

Syste.out.println(5^2);A.6B.7C.10D.2521課堂練習(xí)3.對下面的語句執(zhí)行完后正確的說法是:()intc=’c’/3; System.out.println(c);A.輸出結(jié)果為21 B.輸出結(jié)果為22C.輸出結(jié)果為32 D.輸出結(jié)果為334.以下選項(xiàng)中變量a已定義類型,合法的賦值語句為()A.a(chǎn)=int(y); B.a(chǎn)==1;C.a(chǎn)=a+1=3; D.++a;22課堂練習(xí)5.以下程序的運(yùn)行結(jié)果為。publicclassA{publicstaticvoidmain(Stringa[]){intx=2,y=5; Stringz="5"; System.out.println(x+y); System.out.println(x+z+"x+z"); System.out.println("x+y="+x+y); System.out.println("x+z="+(x+z));}}A.7 B.7 C.2 D.725x+z7x+z

25x+z25x+zx+y=25

x+y=25x+y=7x+y=25x+z=25x+z=7x+z=25x+z=7.23課堂練習(xí)6.執(zhí)行下面程序后,哪個結(jié)論是正確的()

inta,b,c;a=1;b=3;c=(a+b>3?++a:b++);A.a(chǎn)的值為2,b的值為3,c的值為1B.a(chǎn)的值為2,b的值為4,c的值為2C.a(chǎn)的值為2,b的值為4,c的值為1D.a(chǎn)的值為2,b的值為3,c的值為224課堂練習(xí)7.設(shè)各個變量的定義如下,哪些選項(xiàng)的值為true()inta=3,b=3;booleanflag=true;A.++a==bB.++a==b++C.(++a==b)||flagD.(++a==b)&flag25packagejava.lang;importjava.util.Random;publicfinalclassMath{privateMath(){}publicstaticfinaldoubleE=2.7182818284590452354;publicstaticfinaldoublePI=3.14159265358979323846;publicstaticnativedoublesin(doublea);publicstaticnativedoublecos(doublea);publicstaticnativedoubletan(doublea);publicstaticnativedoubleasin(doublea);publicstaticnativedoubleacos(doublea);publicstaticnativedoubleatan(doublea);publicstaticnativedoubleexp(doublea);publicstaticnativedoublelog(doublea);publicstaticnativedoublesqrt(doublea);publicstaticnativedoubleIEEEremainder(doublef1,doublef2);

publicstaticnativedoubleceil(doublea);publicstaticnativedoublefloor(doublea);publicstaticnativedoublerint(doublea);26Math類(importjava.lang)publicstaticnativedoubleatan2(doublea,doubleb);publicstaticnativedoublepow(doublea,doubleb);publicstaticintround(floata)publicstaticlonground(doublea)publicstaticdoubleround(doublea)

publicstaticintabs(inta)publicstaticlongabs(longa)publicstaticfloatabs(floata)publicstaticdoubleabs(doublea)

publicstaticintmax(inta,intb)publicstaticlongmax(longa,longb)publicstaticfloatmax(floata,floatb)publicstaticdoublemax(doublea,doubleb)publicstaticintmin(inta,intb)publicstaticlongmin(longa,longb)publicstaticfloatmin(floata,floatb)publicstaticdoublemin(doublea,doubleb)}27Math類中函數(shù)應(yīng)用舉例 System.out.print(Math.ceil(5.2)+""); System.out.print(Math.ceil(-5.2)+""); System.out.print(Math.floor(5.2)+""); System.out.print(Math.floor(-5.2)+""); System.out.print(Math.round(5.2)+""); System.out.print(Math.round(-5.2)+"");

System.out.print(Math.abs(-7.8)+"");System.out.print(Math.random()*10+10+"");System.out.print(Math.max(5.4,3.7)+"");System.out.print(Math.min(5.4,3.7)+"");286.0-5.05.0-6.05-57.814.31847052473682流程控制語句1.空語句:由一個分號構(gòu)成,不進(jìn)行任何操作;2.表達(dá)式語句:由賦值、自增或自減表達(dá)式加分號構(gòu)成;3.復(fù)合語句:由花括號括起來的一組語句構(gòu)成,又稱塊語句;4.實(shí)現(xiàn)條件結(jié)構(gòu)(分支結(jié)構(gòu))的語句if(Expression)Statement;//if(a>0)a++;if(Expression)Statement1;elseStatement2;//if(a>0)a++;elsea--;說明:(1)Expression只能是boolean類型的表達(dá)式或變量;(2)多個if和else配對的問題。29if和else配對舉例30publicclassTest{publicstaticvoidmain(String[]args){intx,y;x=7;y=1;if(x>6)if(y>6)System.out.println("設(shè)備正常");elseSystem.out.println(“設(shè)備出錯”);}}if(x>6){if(y>6)System.out.println("設(shè)備正常");elseSystem.out.println("設(shè)備出錯");}

等價(jià)else總是與其上最近并且尚未配對的if配對。switch語句說明:1.“Expression”結(jié)果必須為char、byte、short或int類型;2.value_1…value_n是以上四種類型對應(yīng)的直接量且相互不同;3.應(yīng)用舉例:輸入的年份和月份,輸入該月天數(shù)。31switch(Expression){casevalue_1:Statement_1;casevalue_2:Statement_2;

......default:Statement_n;

}switch舉例(找錯)32publicstaticvoidmain(String[]args){doubleyear,month,numDay;

Scannerin=newScanner(System.in);System.out.print("Enteryear,month:");year=in.nextInt();month=in.nextInt();switch(month){case‘1’:case3:case5:case7:case8:case10:case12:numDay=31;break;case4:case6:case9:case11:numDay=30;break;case2:if(((year%4==0)||(year%100!=0))&&(year%400==0)){numDay=29;}else{numDay=28;}break;default:numDay=-1;break;}if(numDay==-1){

System.out.println("輸入的月份有誤");}else{System.out.println(year+"年"+month+"月有"+numDay+"天。");}}}switch舉例(改正后)33publicstaticvoidmain(String[]args){intyear,month,numDay;Scannerin=newScanner(System.in);System.out.print("Enteryear,month:");year=in.nextInt();month=in.nextInt();switch(month){case1:case3:case5:case7:case8:case10:case12:numDay=31;break;case4:case6:case9:case11:numDay=30;break;case2:if(((year%4==0)&&(year%100!=0))||(year%400==0)){numDay=29;}else{numDay=28;}break;default:numDay=-1;break;}if(numDay==-1){System.out.println("輸入的月份有誤");}else{System.out.println(year+"年"+month+"月有"+numDay+"天。");}}}實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語句while(Expression)Statement;//inta=10;while(a>10)a--;do{Statements}while(Expression);//inta=10;do{a--;}while(a>10);for(initialization;termination;iteration)Statement;//for(inta=10;a>10;a--);說明:其中的“Expression”和“termination”都是boolean類型的表達(dá)式或變量。34while舉例使用輾轉(zhuǎn)相除法求兩個正整數(shù)的最大公約數(shù)。1.輸入m和n(m存放較大數(shù),n存放較小數(shù))2.r=m%n;3.循環(huán)直到r等于03.1m=n;3.2n=r;3.3r=m%n;4.輸出n;35intCommonFactor(intm,intn){intr=m%n;while(r!=0){m=n;n=r;r=m%n;}returnn;}do-while舉例(十進(jìn)制轉(zhuǎn)換十六進(jìn)制)36publicstaticvoidmain(Stringargs[]){intvalue;

Scannerin=newScanner(System.in);System.out.print("Enterainteger:");value=in.nextInt();

System.out.println(value+"->"+toHexString(value));}publicstaticStringtoHexString(intdata){

StringBufferbuf=newStringBuffer(8);do{

buf.append(Character.forDigit(data&0xF,16));

data>>>=4;}while(data!=0);returnbuf.reverse().toString();}for舉例輸出1~100之間的整數(shù),每行只輸出5個。for(inti=1;i<100;i++){

System.out.print(“”+i);

if(i%5==0)

System.out.println();}37break語句1.應(yīng)用在switch和3種循環(huán)結(jié)構(gòu)的語句中;2.格式1:break;//無標(biāo)識的break語句;

可以跳出switch語句,循環(huán)結(jié)構(gòu)中的一層循環(huán);3.格式2:breakIdentifier;//有標(biāo)識的break語句;

跳出循環(huán)結(jié)構(gòu),到Identifier所標(biāo)識的位置,執(zhí)行以下的語句??梢杂脕硖龆鄬友h(huán);38for(inti=0;i<count;i++){…for(intj=0;j<count;j++){…for(intk=0;k<count;k++){ …break;…}}}……breakoutside:outside:brea

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論