




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第2章數(shù)據(jù)類型、運算符、
表達式和語句2.1標識符和關鍵字2.2基本數(shù)據(jù)類型2.3基本數(shù)據(jù)類型之間的轉換2.4數(shù)組2.5運算符與表達式2.6語句2.1標識符和關鍵字
2.2基本數(shù)據(jù)類型
Java的數(shù)據(jù)類型如圖2.1所示。圖2.1Java語言數(shù)據(jù)類型2.2基本數(shù)據(jù)類型
2.2.1整型數(shù)據(jù)
整型數(shù)據(jù)包括整型常量和整型變量。整型數(shù)據(jù)在機器中用補碼表示,最高位為符號位。
整型常量分為三種:十進制整數(shù)、八進制整數(shù)和十六進制整數(shù)。其中,八進制整數(shù)以0開頭;十六進制整數(shù)以0x或0X開頭。比如整數(shù)128,十進制表示為128,八進制表示為0200,十六進制表示為0x80或0X80。
整型變量分為四種:byte、short、int和long。它們各自所占位數(shù)及取值范圍如表2.1所示。
(1)兩個整數(shù)相加,結果默認轉化為int,賦值給byte或short時會發(fā)生類型轉化問題。
【例2-1】兩個byte類型數(shù)據(jù)相加。編譯效果如圖2.2所示。圖2.2兩個byte類型數(shù)據(jù)相加的編譯效果必須將n+m的結果進行顯式轉化,第6行程序改成bytes=?(byte)n+m,編譯才能通過。
(2)在選用整數(shù)類型上,一定要注意數(shù)的范圍,否則可能由于數(shù)的類型選擇不當而造成溢出,例如下面的代碼add就存在著潛在的溢出問題,從而為程序帶來錯誤(bug)。
publicint?add(int?a,int?b){
return?a+b;
}
(3)對于long類型整數(shù)常量,書寫時應在數(shù)字后加“l(fā)”或“L”。2.2.2浮點型數(shù)據(jù)
浮點型常量分為兩種:float型和double型。使用時要注意:float型常量后必須加“f”或“F”,double型常量后可以加“d”或“D”或什么都不加(缺省默認方式)。浮點型數(shù)據(jù)有兩種表示方法:
(1)十進制數(shù)形式:由數(shù)字和小數(shù)點組成,且必須有小數(shù)點,如0.123,1.23,123.0;
(2)科學計數(shù)法形式:如:123e3或123E3,其中e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。浮點型變量也分為兩種:float型和double型,其數(shù)據(jù)特點如表2.2所示。2.2.3布爾型數(shù)據(jù)
布爾型數(shù)據(jù)只有兩個值true(真)和false(假),其默認值為false。布爾型變量的定義如:
booleanb=true;
使用時要注意,布爾型數(shù)據(jù)不能和其他類型數(shù)據(jù)(包括數(shù)值型)進行相互轉換,boolean類型只允許使用boolean值。2.2.4字符型數(shù)據(jù)
Java使用Unicode字符集,這種字符集中每個字符用二個字節(jié)即16位表示。字符型常量是用單引號括起來的一個字符,如?'b','1',或是單引號所引的轉義字符(常見的轉義字符見表2.3),或是形如?'\u????'?的Unicode形式的字符,其中?'????'?應嚴格按照四個十六進制數(shù)字進行替換,例如charc='\u31100'?是錯誤的,而charc?='\u2abc'?是正確的。字符型變量只有一種:char類型,它在機器中占16位,其范圍為0~65?535。使用時要注意:字符型變量實際上是一個數(shù)字,因此它可以賦值給一個數(shù),例如floatf='a';inti='a'等式子都是正確的。
2.3基本數(shù)據(jù)類型之間的轉換
2.3.1自動轉換
不同類型數(shù)據(jù)間的優(yōu)先關系如下:
低---------------------------------------------------->高
byte→short→char→int→long→float→double
自動轉換是指編譯系統(tǒng)可自動將低優(yōu)先級數(shù)據(jù)類型轉換為高優(yōu)先級數(shù)據(jù)類型。各種數(shù)據(jù)類型的轉換規(guī)則見表2.4。2.3.2強制類型轉換
高優(yōu)先級數(shù)據(jù)要轉換成低優(yōu)先級數(shù)據(jù),需用到強制類型轉換,其轉換格式為
(類型名)(數(shù)據(jù)或表達式)
例如:
intx;
shorta=(short)x;/*把int型變量x強制轉換為short型*/
2.4數(shù)組
2.4.1數(shù)組的概念
數(shù)組是相同類型的數(shù)據(jù)按順序組成的一種復合數(shù)據(jù)類型,通過數(shù)組名加數(shù)組下標來使用數(shù)組中的數(shù)據(jù),下標從0
開始。
數(shù)組元素的數(shù)據(jù)類型可以是Java的任何數(shù)據(jù)類型,例
如:基本類型(int、float、double、char等)、類(class)或接口(interface)等。2.4.2數(shù)組的聲明和創(chuàng)建
聲明數(shù)組就是要確定數(shù)組名、維數(shù)和元素的數(shù)據(jù)類型。
聲明一維數(shù)組有兩種方式:
類型標識符數(shù)組名[];
類型標識符[]數(shù)組名;例如:intabc[];String[]example;myClass[]mc;
聲明二維數(shù)組也有兩種方式:
類型標識符數(shù)組名[][];
類型標識符[][]數(shù)組名;
創(chuàng)建數(shù)組要給出數(shù)組長度并分配空間。一維數(shù)組的創(chuàng)建格式如下:
數(shù)組名=new類型標識符[大小];二維數(shù)組的創(chuàng)建格式如下:
數(shù)組名=new類型標識符[大小][大小];
數(shù)組的聲明和創(chuàng)建也可以合為一步,如下所示:
類型標識符數(shù)組名[]=new類型標識符[大小];
類型標識符數(shù)組名[][]=new類型標識符[大小][大小];2.4.3數(shù)組的初始化和賦值
數(shù)組的初始化有兩種方式:
(1)靜態(tài)初始化:直接在聲明的時候使用初始化表給數(shù)組的全部或部分元素賦初值。
例如:
int[]a={3,4,5,6};floatb[5]={1.0,2.0};
(2)動態(tài)初始化:使用賦值表達式給數(shù)組的各個元素賦值。例如:
inta[]=newint[2];
a[0]=1;
a[1]=2;
a[2]=3;
每個數(shù)組都包含一個成員變量length,它是在初始化時設定的數(shù)組大小。我們可以在數(shù)組名后加.length來訪問該變量。例如,用a.length可以獲取數(shù)組a的大小。
【例2-3】一維數(shù)組應用舉例:在給定的一維數(shù)組中找出最大值和最小值。程序運行結果如圖2.3所示。圖2.3一維數(shù)組應用舉例2.5運算符與表達式
對各種類型的數(shù)據(jù)進行加工的過程稱為運算,表示各
種不同運算的符號稱為運算符,參與運算的數(shù)據(jù)稱為操作數(shù)。Java語言運算符如圖2.4所示。表達式是用運算符把操作數(shù)連接起來的式子,可分為算術表達式、關系表達式、邏輯表達式、賦值表達式、條件表達式。
2.5.1算術運算符和算術表達式
算術運算符如表2.5所示。算術表達式是由算術運算符和位運算符將操作數(shù)連接組成的表達式,例如:x+y%z。注意:
(1)兩個整數(shù)類型的數(shù)據(jù)做除法時,結果只保留整數(shù)部分。
(2)整數(shù)和浮點數(shù)都能進行取余運算。
(3)“/”運算符,當都為整數(shù)時,結果為整數(shù),有一個為浮點,則為浮點數(shù)。
(4)自增、自減運算符只適用于變量,且位于運算符的不同側有不同效果。例如假設inti=3,j=4,作j=i+++j+++i運算后,i的值為5,j的值為12。2.5.2關系運算符和關系表達式
關系運算符都是雙目運算符,具體內(nèi)容如表2.6所示。利用關系運算符連接的式子稱為關系表達式,運算結果是一個布爾型數(shù)值:true(為真)或者false(為假)。2.5.3邏輯運算符和邏輯表達式
邏輯運算符見表2.7。利用邏輯運算符將操作數(shù)連接的式子稱為邏輯表達式。邏輯表達式參與運算的操作數(shù)都是布爾類型的,結果也是布爾類型。注意:
利用“&&”和“||”執(zhí)行操作時,如果從左邊的表達式中得到的操作數(shù)能確定運算結果,則不再對右邊的表達式進行運算;利用“&”和“|”執(zhí)行操作時,左右兩邊的表達式都會進行運算。采用“&&”和“||”的目的是為了加快運算速度。程序運行結果如圖2.4所示。圖2.4邏輯運算符舉例2.5.4移位運算符
移位運算符都是雙目運算符,具體內(nèi)容如表2.8所示。注意:
(1)當x是byte、short或int類型數(shù)據(jù)時,系統(tǒng)總是先計算出n%32的結果m,然后再進行x移位m的運算。
(2)當x是long類型數(shù)據(jù)時,系統(tǒng)總是先計算出n%64的結
果m,然后再進行x移位m的運算。2.5.5位運算符
位運算符的具體內(nèi)容見表2.9。
例如:
inti=0xFFFFFFF1;
intj=~i;//最高位取反后為正,j值為14,6^3的結果為52.5.6條件運算符
條件運算符為三目運算符,其具體形式為
布爾表達式1?表達式2:表達式3(表達式2和表達式3的類型必須相同。)
條件運算符的執(zhí)行順序是:先求解表達式1,若值為true則執(zhí)行表達式2,此時表達式2的值作為整個條件表達式的值,否則求解表達式3,將表達式3的值作為整個條件表達式的值。程序運行結果如圖2.5所示。圖2.5條件運算符的應用2.5.7賦值運算符和賦值表達式
Java語言中,賦值運算符是“=”。賦值運算符的作用是將賦值運算符右邊的一個數(shù)據(jù)或一個表達式的值賦給賦值運算符左邊的一個變量。注意賦值號左邊必須是變量(即沒有final修飾的變量)。賦值運算符組成的表達式稱為賦值表達式。賦值運算的另一種形式是復合賦值運算符連接起來的表達式,具體參見表2.10。2.5.8運算符的優(yōu)先級
運算符的優(yōu)先級決定了表達式中不同運算執(zhí)行的先后次序。優(yōu)先級高的先進行運算,優(yōu)先級低的后進行運算。在優(yōu)先級相同的情況下,由結合性決定運算順序。
最基本的規(guī)律是:域、括號和數(shù)組下標的運算優(yōu)先級最高,接下來依次是單目運算、雙目運算、三目運算,賦值運算的優(yōu)先級最低。運算符的優(yōu)先級具體見表2.11。
2.6語句
2.6.1語句概述
Java程序通過控制語句來執(zhí)行程序流,完成一定的任務。
Java中的控制語句主要有以下幾類:
(1)分支語句:if-else,switch。
(2)循環(huán)語句:while,do-while,for。
(3)跳轉語句:break,continue,return。2.6.2分支語句
分支語句的執(zhí)行流程為:根據(jù)條件表達式的值選擇語句組的執(zhí)行次序,符合條件表達式的語句組被執(zhí)行,不符合條件表達式值的語句組被跳過不執(zhí)行。
條件語句有以下四種基本類型。
1.?if結構
if結構格式如下:
if(布爾表達式){
語句組;
}
2.?if…else結構
if…else結構格式如下:
if(布爾表達式){
語句組1;
}
else{
語句組2;
}
3.嵌套if…else結構
嵌套if…else結構格式如下:
if(布爾表達式1){
語句組1;
}
elseif(布爾表達式2){
語句組2;
}
…
elseif(布爾表達式n){
語句組n;
}
else{
語句組n+1;
}注意:
(1)?if括號中的結果應該為布爾值,否則編譯不會通過,例如如果x與y是int類型,x=y是賦值語句,其結果不是布爾值,不能充當布爾表達式;如果它們的類型本身為boolean,則x=y可以充當if中的條件。
(2)養(yǎng)成if后面無論是一句還是多句代碼,都寫{}的習慣。程序運行結果如圖2.6所示。圖2.6if...else結構的應用注意:
(1)表達式的返回值類型必須是這幾種之一:byte、short、int和char,其他類型都不允許。
(2)?case子句中的常量表達式n必須是常量,而且所有case子句中的值應是不同的。
(3)語句塊不需要用?{}?括起來。
(4)?default子句是可選的。
(5)?break語句用來在執(zhí)行完一個case分支后,使程序跳出switch語句,即終止switch語句的執(zhí)行(在一些特殊情況下,多個不同的case值要執(zhí)行一組相同的操作,這時可以不用break)。
(6)可以使用if…else結構實現(xiàn)switch的所有功能,但是switch結構更加簡練。程序運行結果如圖2.7所示。圖2.7swith結構的應用2.6.3循環(huán)語句
1.?while循環(huán)
while循環(huán)(又稱“當型循環(huán)”)的執(zhí)行流程為:首先判斷是否滿足條件,若滿足則執(zhí)行循環(huán)體,如此重復執(zhí)行,直到不滿足條件。一般格式如下:
[初始化]
while(布爾表達式){
循環(huán)體;
循環(huán)變量控制;
}
其流程邏輯關系如圖2.8所示。圖2.8while循環(huán)示意圖
2.?do…while循環(huán)
do…while循環(huán)(又稱“直到型循環(huán)”)的執(zhí)行流程為:首先執(zhí)行循環(huán)體,然后計算布爾表達式,若結果為true,則繼續(xù)執(zhí)行循環(huán)體,直到布爾表達式的值為false為止。一般格式如下:
[初始化]
do{
循環(huán)體;
循環(huán)變量控制;
}while(布爾表達式)
其流程邏輯關系如圖2.9所示。圖2.9do...while循環(huán)示意圖
3.?for循環(huán)
for循環(huán)的執(zhí)行流程為:首先執(zhí)行初始化操作,然后判斷終止條件是否滿足,如果滿足,則執(zhí)行循環(huán)體中的語句,最后執(zhí)行迭代部分。完成一次循環(huán)后,重新判斷終止條件。
一般格式如下:
for(初值表達式(初始化);布爾表達式(終止條件);迭代表達式){
循環(huán)體;
}
其流程邏輯關系如圖2.10所示。圖2.10for循環(huán)示意圖注意:
(1)在“初值表達式”中可以申明作用域為該for循環(huán)的變量。
(2)“布爾表達式”為空時,相當于值為true。
(3)“初值表達式”、“布爾表達式”以及“迭代表達式”部分都可以為空語句(但分號不能省),三者均為空的時候,相當于一個無限循環(huán)。
(4)“初值表達式”和“迭代表達式”部分都可以使用逗號語句執(zhí)行多個操作。
(5)如果循環(huán)變量在for中定義,變量的作用范圍僅限于循環(huán)體內(nèi)。
(6)?for循環(huán)和while循環(huán)可以相互轉換。
【例2-8】for循環(huán)結構的例子:求1?+?2?+?3?+?...?+?100的值。
publicclassExample2_8{
publicstaticvoidmain(String[]args){
intsum=0;
for(inti=1;i<=100;i++)
sum+=i;
System.out.println(“1+2+3+...+100=”+sum);
}
}程序運行結果如圖2.11所示。圖2.11for循環(huán)結構例子該程序等同于以下程序:
publicclassExample2_8{
publicstaticvoidmain(String[]args){
intsum=0;
inti=1;
while(i<=100){
sum+=i;
i=i+1;
}
System.out.println(“1+2+3+...+100=”+sum);
}
}或等同于以下程序:
publicclassExample2_8{
publicstaticvoidmain(String[]args){
intsum=0;
inti=1;
do{
sum+=i;
i=i+1;
}while(i<=100);
System.out.println(“1+2+3+...+100=”+sum);
}
}2.6.4跳轉語句
Java語言提供了四種跳轉語句:break,continue,return和throw。
跳轉語句的功能是改變程序的執(zhí)行流程。break語句可以獨立使用,而continue語句只能用在循環(huán)結構的循環(huán)體中。
1.?break語句
break語句的作用是退出switch語句或循環(huán)語句,并從緊
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版權協(xié)議:國家重要文化遺產(chǎn)數(shù)據(jù)使用許可合同
- 2025年高速公路收費員崗位技能及理論知識考試題與答案
- 2024北京理工大附中高一(下)期中數(shù)學試題及答案
- 新農(nóng)業(yè)科技發(fā)展指南
- 農(nóng)村金融信貸支持手冊
- 環(huán)保行業(yè)工業(yè)廢水處理與回用產(chǎn)業(yè)化方案
- 火箭軍行業(yè)導彈發(fā)射方案
- 在線教育平臺考生模擬卷
- 游戲產(chǎn)業(yè)游戲內(nèi)容創(chuàng)新與市場推廣策略
- 山東省棗莊市滕州市滕州實驗高級中學2024-2025學年高一下學期3月月考英語試題(原卷版+解析版)
- 2025年徐州市專業(yè)技術人員公需課程 - 知識產(chǎn)權
- 2025年倉儲物流改進與合作伙伴協(xié)議
- 人教版《美術》二年級上冊第17課《會轉的玩具》課件
- 小學生數(shù)據(jù)分析課件
- 術后鎮(zhèn)痛規(guī)范與流程
- 《瓣膜性心臟病》課件
- 植入式靜脈給藥裝置護理技術課件
- 2025年甘肅農(nóng)墾集團招聘筆試參考題庫含答案解析
- 2024年01月湖南2024岳陽市農(nóng)商銀行系統(tǒng)招考員工筆試歷年參考題庫附帶答案詳解
- 2025年泰隆銀行招聘筆試參考題庫含答案解析
- 5.1導數(shù)的概念及其意義(同步練習)(含解析)-【一堂好課】2022-2023學年高二數(shù)學同步名師重點課堂(人教A版2019選擇性必修第二冊)
評論
0/150
提交評論