版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章運算符、表達式與語句何中越計算機科學學院上章知識回顧基本數據類型邏輯類型、整數類型、字符類型、浮點類型基本數據類型的轉換自動轉換和強制轉換數據的輸入輸出System.out.printf()數組(一維數組、二維數組)數組的聲明、創(chuàng)建、數組元素的使用、數組的初始化、數組的引用Contents語句表達式運算符運算符Java支持如下運算符:算術運算符:+,-,*,/,%,++,--關系運算符:>,<,>=,<=,==,!=邏輯運算符:!,&&,||位運算符:&,|,^,~,>>,<<,>>>賦值運算符:=擴展賦值運算符:+=,-+,*=,/=字符串連接運算符:+單目運算符結合性是從左到右運算符是一些特殊的符號,主要用于數學函數、一些類型的賦值語句和邏輯比較方面,JAVA提供了豐富的運算符。3.1算術運算符算術運算符主要有:+-*/%(二元運算符)++--(單目運算符)/:除法例如:7/2結果是3為什么不是3.5?%:取余例如:12%10結果是2+-還可以作為數據的正負符號inta=5;b=3;intc=a/b;intd=a%b;程序結果是?算術運算符++--(自增自減運算符、單目)可以放在操作數之前也可以放在操作數之后(操作數必須是一個整型或者浮點型變量)自增自減運算符的作用是使變量的值增1或者減1++x:使用x前,先使x的值加1--x:使用x前,先使x的值減1x++:使用x之后,使x的值加1x--:使用x之后,使x的值減1例如:inta=b=3;intc=a++;intd=++b;結果是?inta=b=3;intc=a--;intd=--b;結果是?自加自減運算符例題注意??!請看課后習題1算術混合元算的精度:按照運算符兩邊的操作元的最高精度保留結果的精度。char類型數據和整型數據運算結果的精度是int。3.2關系運算符關系運算符用來比較兩個值的關系,關系運算符的運算結果是boolean類型數據。當運算符對應的關系成立時,運算結果是true,否則是false。大小關系運算符、等于不等關系關系運算符運算用法舉例結果==相等于2==1fasle!=不等于2!=1true>大于2>1true<小于2<1false>=大于等于2>=1true<=小于等于2<=1false注意:符號之間沒有空格等于符號==和賦值符號=的差別3.3邏輯運算符邏輯運算符:布爾型數據的運算,運算結果也是布爾型數據!——邏輯非:單目
&&——邏輯與||——邏輯或:雙目例如:1>8&&9>2:1>8||6>2:9>3&&3<2:9>3||3<2:結果false結果true結果是false結果是trueP23:短路運算符3.4賦值運算符與擴展賦值運算符賦值運算符=:左邊的操作元必須是變量,不能是常量或表達式當”=“兩側數據類型不一致時,可以適用默認類型轉換或使用強制類型轉換原則進行處理注意:可以將整型常量直接賦值給byte、short、char等類型變量,而不需要進行強制類型轉換,只要不超出其范圍
byteb=12;charc=100; bytebb=256;//錯誤shorts=-32769;//錯誤了解擴展賦值運算符:+=,-+,*=,/=賦值運算符例子等價表達式+=i+=8i=i+8-=i-=8i=i-8*=i*=8i=i*8/=i/=8i=i/8%=i%=8i=i%83.6位運算符位運算主要是對二進制位進行操作:位運算符運算用法用法&按位與只有當進行邏輯操作的兩個二進制位都為1時,操作結果才為1Op1&op2|按位或當進行操作的兩個二進制位有一個為1時,操作結果為1op1|op2^按位異或當進行操作的兩個二進制位不相同時,操作結果才為1op1^op2~按位取反對操作數的各個二進制位取反~op1例子:11111010&01011100=0101100011101100|00010101=1111110111000101^01011100=10011001~11000101=00111010請看教材25頁例題3-2位運算符也可以操作邏輯型的數據,但是和邏輯運算符&&、||、!有所不同,請理解教材P25頁的舉例:((y=1)==0)&&((x=6)==6);((y=1)==0)&((x=6)==6);X的值??請思考:a^a=?0^a=?
如果a^b=c
那么c^b=?請看課后習題63.7條件運算符條件運算符是一個三目運算符,它的符號是?:
需要連接三個操作元。其中op1為boolean類型表達式,先計算op1的值,若為true,則整個三目運算的結果為op2的值,否則整個運算結果為op3的值運算法則:
op1?op2:op3當op1的值是true時,op1?op2:op3的運算結果是op2的值;當op1的值是false時,op1?op2:op3的運算結果是op3的值;例如:12>8?100:20012<8?100:200例如:intscore=80;intx=-100;Stringtype=score<60?“不及格”:”幾個”;x==0?0:-1;字符串連接符+“+”除用于算術加法運算外,還可用于對字符串進行連接操作Strings=“hello”+”world”;“+”運算符兩側的操作數中只要有一個是字符串(String)類型,系統(tǒng)會自動將另外一個操作數轉換為字符串然后再進行連接intc=12;System.out.println(“c=“+c);在進行打印的時候,無論任何類型,都自動轉換為字符串進行打印System.out.println(c);3.5移位運算符(難點)移位運算符用來對二進制進行操作,分為左移位和右移位對于正數將高位用0填充;負數用1填充,然后再進行移位運算左移<<“a<<b;”將二進制形式的a逐位左移b位,左邊的高位的0和1會被逐位移出,低位空出的b位補0。對于byte或short型數據,a<<n的運算結果是int型精度。例如:bytea=4;a<<1;當進行a<<1運算時,計算系統(tǒng)首先將a升級為int型數據。帶符號右移>>“a>>b;”將二進制形式的a逐位右移b位,最高位空出的b位補原來的符號位(正數用0,負數用1)正數不斷右移的結果是0,負數不斷右移的結果是-1inta=4;a>>11111100011111111111111111111111111111000bytea=-811111111111111111111111111110000在進行a<<1運算時,首先將11111000升級為int型:將高位用1填充:
然后再進行移位運算運算符的優(yōu)先級(補充重點)運算符優(yōu)先級運算符結合性1[]()從左到右2!++--+-從右到左3*/%從左到右4+-從左到右5>><<>>>從左到右6>>=<<=從左到右7==!=從左到右8&從左到右9^從左到右10|從左到右11&&從左到右12||從左到右13?:從左到右14=從右到左*運算符的優(yōu)先級決定了表達式中運算執(zhí)行的先后順序*運算符的結合性決定了相同級別的運算符執(zhí)行的先后順序高低表達式表達式是符合一定語法規(guī)則的運算符和操作數的序列a5.0+a(a-b)*c-4i<30&&i%10!=0表達式的類型和值對表達式中操作數進行運算得到的結果稱為表達式的值表達式值的數據類型即為表達式的類型表達式的運算順序應按照運算符的優(yōu)先級由高到低的順序進行優(yōu)先級相同的運算符按照事先約定的結合方向進行請思考1、設a=3,b=12計算下列表達式的值:--a%++b(++a)<<aa<10&&a>10?a:b2、
inta=9,b=-9,x=0,y=0,z=0;
x=a<<3;
y=a>>1;
z=b>>1;x,y,z的值是多少?JAVA語句Java里的語句可分為以下5類:(1)方法調用語句在第4章將介紹類、對象等概念,對象可以調用類中的方法產生行為,如:例子1中的
reader.nextInt();
(2)表達式語句一個表達式的最后加上一個分號就構成了一個語句,稱作表達式語句。分號是語句不可缺少的部分。例如,賦值語句:x=23;語句(3)復合語句可以用“{”和“}”把一些語句括起來構成復合語句,一個復合語句也稱作一個代碼塊。例如,
{z=23+x;System.out.println("hello");}(4)控制語句控制語句包括:條件分支語句、循環(huán)語句和跳轉語句。(5)package語句和import語句
package語句和import語句與類、對象有關,將在第4章講解??刂普Z句
1、條件分支語句:根據不同條件,執(zhí)行不同語句1)if…else2)switch開關語句2、循環(huán)語句:重復執(zhí)行某些動作
1)while循環(huán)2)do…while循環(huán)3)for循環(huán)3、跳轉語句:
break;continue;條件分支語句:簡單的if條件語句條件語句可以根據不同的條件執(zhí)行不同的語句。If條件語句用于告訴程序在某個條件成立的情況下執(zhí)行某段程序,而在另一種情況下執(zhí)行另外的語句。
1、簡單的if條件語句:if(boolean類型表達式){
語句或語句塊;}boolean類型表達式:必要參數,表示它最后返回的結果必須是一個布爾值。它可以是一個單純的布爾變量或常量,也可以是使用關系或者布爾運算符的表達式。語句或語句塊:可選參數,可以是一條或者多條語句,當表達式的值為true時,執(zhí)行這些語句。若只有一條語句,則可以省略條件語句中的{},但最好不要省略。
表達式語句序列TFIf條件語句的執(zhí)行過程If條件語句例子publicclassGetif{//創(chuàng)建類
publicstaticvoidmain(Stringargs[]){//主方法
intx=45;//聲明int型變量x,并賦給初值
inty=12;//聲明int型變量y,并賦給初值
if(x>y){//判斷x是否大于y System.out.println("變量x大于變量y");//如果條件成立,輸出的信息
}
if(x<y){//判斷x是否小于y System.out.println("變量x小于變量y");//如果條件成立,輸出的信息
}}}條件分支語句:if-else語句2、如果滿足某種條件,就進行某種處理,否則就進行另一種處理。if(boolean類型表達式){
語句或語句塊; }else{
語句或語句塊; }如果if后表達式的值為true,則執(zhí)行if語句的復合語句;如果表達式的值為false,則執(zhí)行else后面的復合語句。表達式語句序列語句序列TFif-else語句例子publicclassGetifelse{ publicstaticvoidmain(Stringargs[]){//主方法
intmath=95;//聲明int型局部變量,并賦給初值95 intenglish=56;//聲明int型局部變量,并賦給初值56
if(math>60){//使用if語句判斷math是否大于60 System.out.println("數學及格了");//條件成立時輸出信息
}else{ System.out.println("數學沒有及格");//條件不成立輸出的信息
}
if(english>60){//判斷英語成績是否大于60 System.out.println("英語及格了");//條件成立輸出的信息
}else{ System.out.println("英語沒有及格");//條件不成立輸出的信息
} }}請思考:對于if-else語句如果使用三元運算符?:怎么簡化。if(a>0)
{
b=a;
}
else
{
b=-a;
}b=a>0?a:-a條件分支語句:if-elseif多分支語句(嵌套)3、if-elseif多分支語句多分支語句用于針對某一事件的多種情況進行處理:如果滿足某種條件,就進行某種處理,否則如果滿足另一種條件則執(zhí)行另一種處理。if(boolean類型表達式){
語句塊1; }elseif(boolean類型表達式){
語句塊2; }…else{
語句塊n; }條件1條件2條件n語句塊1語句塊2語句塊n語句塊n+1FFFTTTifelseIfelseIfelseIf-elseif多分支選擇:上節(jié)知識回顧表達式語句復合語句控制語句:條件分支、循環(huán)、跳轉條件分支:ifelse(簡單的if、ifelse、嵌套的ifelse)If語句舉例publicclassGetTerm{//創(chuàng)建主類
publicstaticvoidmain(Stringargs[]){//主方法
intx=20;//聲明int型局部變量
if(x>30){//判斷變量x是否大于30 System.out.println("a的值大于30");//條件成立的輸出信息
}elseif(x>10){//判斷變量x是否大于10 System.out.println("a的值大于10,但小于30");//條件成立的輸出信息
}elseif(x>0){//判斷變量x是否大于0 System.out.println("a的值大于0,但小于10");//條件成立的輸出信息
}else{//當以上條件都不成立時,執(zhí)行的語句塊
System.out.println("a的值小于0");//輸出信息
} }}}例三:運行例3-3嵌套的if語句的例子publicclassifTest{publicstaticvoidmain(Stringargs[]){intintTestScore=82;chargrade;if(intTestScore>=90){Grade=‘A’}elseif(intTestScore>=80){grade=‘B’}elseif(intTestScore>=70){grade=‘C’}elseif(intTestScore>=60){grade=‘D’}else{grade=‘F’}System.out.println(“分數=”+intTestScore);System.out.println(“評價=”+grade);}}條件分支語句:switch語句switch語句是多分支的開關語句:它的形式如下switch(表達式){case常量值1:若干語句break;case常量值2:若干語句break;……case常量值n:若干語句break;default:若干語句}1、switch語句中表達式的值必須是整型或字符型2、case子句中的常量值1—n也必須是整型或字符型。,且所有case子句中的值應是不同的;3、default子句是任選的;4、break語句用來在執(zhí)行完一個case分支后使程序跳出switch語句塊;
switch語句首先計算表達式的值,如果表達式的值與某個case后面的常量值相同,就執(zhí)行該case里的語句,直到遇到break語句為止。若沒有任何常量值與表達式的值相同,則執(zhí)default后面的若干語句。switch語句例子publicclassGetSwitch{//創(chuàng)建類
publicstaticvoidmain(Stringargs[]){//主方法
intweek=2;//定義int型變量week switch(week){//指定switch語句的表達式為變量week case1://定義case語句中的常量為1 System.out.println("Monday");//輸出信息
break; case2://定義case語句中的常量為2 System.out.println("Tuesday"); break; case3://定義case語句中的常量為3 System.out.p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024專利知識產權合同
- 2024五星級酒店食品供應與采購勞務合同
- 2024外架搭設合同
- 2024軟件項目委托開發(fā)合同
- 2024年度旅游景點開發(fā)合作協(xié)議
- 2024年度安置房買賣合同中的違約責任
- 2024年度新能源項目開發(fā)建設合同
- 文書模板-充電樁股份轉讓合同
- 2024年度貨物買賣合同商品描述與支付方式詳解
- 2024年幼兒園教育聯盟協(xié)議
- 國開電大 可編程控制器應用實訓 形考任務6實訓報告
- GB/T 34120-2023電化學儲能系統(tǒng)儲能變流器技術要求
- 跨國企業(yè)中方外派人員的跨文化適應
- 《道路交叉設計》課件
- 《活著》讀后感-課件
- 體檢報告匯總分析中風險的防范
- 村里建群管理制度
- 【城市軌道交通運營安全管理研究5300字】
- 2024年中核匯能有限公司招聘筆試參考題庫含答案解析
- 上海市2024屆高三7月模擬預測歷史試題(等級考)(解析版)
- 肺炎護理查房課件
評論
0/150
提交評論