版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章數(shù)據(jù)類型、運(yùn)算符、
表達(dá)式和語句2.1標(biāo)識(shí)符和關(guān)鍵字2.2基本數(shù)據(jù)類型2.3基本數(shù)據(jù)類型之間的轉(zhuǎn)換2.4數(shù)組2.5運(yùn)算符與表達(dá)式2.6語句2.1標(biāo)識(shí)符和關(guān)鍵字
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ù)在機(jī)器中用補(bǔ)碼表示,最高位為符號(hào)位。
整型常量分為三種:十進(jìn)制整數(shù)、八進(jìn)制整數(shù)和十六進(jìn)制整數(shù)。其中,八進(jìn)制整數(shù)以0開頭;十六進(jìn)制整數(shù)以0x或0X開頭。比如整數(shù)128,十進(jìn)制表示為128,八進(jìn)制表示為0200,十六進(jìn)制表示為0x80或0X80。
整型變量分為四種:byte、short、int和long。它們各自所占位數(shù)及取值范圍如表2.1所示。
(1)兩個(gè)整數(shù)相加,結(jié)果默認(rèn)轉(zhuǎn)化為int,賦值給byte或short時(shí)會(huì)發(fā)生類型轉(zhuǎn)化問題。
【例2-1】兩個(gè)byte類型數(shù)據(jù)相加。編譯效果如圖2.2所示。圖2.2兩個(gè)byte類型數(shù)據(jù)相加的編譯效果必須將n+m的結(jié)果進(jìn)行顯式轉(zhuǎn)化,第6行程序改成bytes=?(byte)n+m,編譯才能通過。
(2)在選用整數(shù)類型上,一定要注意數(shù)的范圍,否則可能由于數(shù)的類型選擇不當(dāng)而造成溢出,例如下面的代碼add就存在著潛在的溢出問題,從而為程序帶來錯(cuò)誤(bug)。
publicint?add(int?a,int?b){
return?a+b;
}
(3)對(duì)于long類型整數(shù)常量,書寫時(shí)應(yīng)在數(shù)字后加“l(fā)”或“L”。2.2.2浮點(diǎn)型數(shù)據(jù)
浮點(diǎn)型常量分為兩種:float型和double型。使用時(shí)要注意:float型常量后必須加“f”或“F”,double型常量后可以加“d”或“D”或什么都不加(缺省默認(rèn)方式)。浮點(diǎn)型數(shù)據(jù)有兩種表示方法:
(1)十進(jìn)制數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成,且必須有小數(shù)點(diǎn),如0.123,1.23,123.0;
(2)科學(xué)計(jì)數(shù)法形式:如:123e3或123E3,其中e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。浮點(diǎn)型變量也分為兩種:float型和double型,其數(shù)據(jù)特點(diǎn)如表2.2所示。2.2.3布爾型數(shù)據(jù)
布爾型數(shù)據(jù)只有兩個(gè)值true(真)和false(假),其默認(rèn)值為false。布爾型變量的定義如:
booleanb=true;
使用時(shí)要注意,布爾型數(shù)據(jù)不能和其他類型數(shù)據(jù)(包括數(shù)值型)進(jìn)行相互轉(zhuǎn)換,boolean類型只允許使用boolean值。2.2.4字符型數(shù)據(jù)
Java使用Unicode字符集,這種字符集中每個(gè)字符用二個(gè)字節(jié)即16位表示。字符型常量是用單引號(hào)括起來的一個(gè)字符,如?'b','1',或是單引號(hào)所引的轉(zhuǎn)義字符(常見的轉(zhuǎn)義字符見表2.3),或是形如?'\u????'?的Unicode形式的字符,其中?'????'?應(yīng)嚴(yán)格按照四個(gè)十六進(jìn)制數(shù)字進(jìn)行替換,例如charc='\u31100'?是錯(cuò)誤的,而charc?='\u2abc'?是正確的。字符型變量只有一種:char類型,它在機(jī)器中占16位,其范圍為0~65?535。使用時(shí)要注意:字符型變量實(shí)際上是一個(gè)數(shù)字,因此它可以賦值給一個(gè)數(shù),例如floatf='a';inti='a'等式子都是正確的。
2.3基本數(shù)據(jù)類型之間的轉(zhuǎn)換
2.3.1自動(dòng)轉(zhuǎn)換
不同類型數(shù)據(jù)間的優(yōu)先關(guān)系如下:
低---------------------------------------------------->高
byte→short→char→int→long→float→double
自動(dòng)轉(zhuǎn)換是指編譯系統(tǒng)可自動(dòng)將低優(yōu)先級(jí)數(shù)據(jù)類型轉(zhuǎn)換為高優(yōu)先級(jí)數(shù)據(jù)類型。各種數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則見表2.4。2.3.2強(qiáng)制類型轉(zhuǎn)換
高優(yōu)先級(jí)數(shù)據(jù)要轉(zhuǎn)換成低優(yōu)先級(jí)數(shù)據(jù),需用到強(qiáng)制類型轉(zhuǎn)換,其轉(zhuǎn)換格式為
(類型名)(數(shù)據(jù)或表達(dá)式)
例如:
intx;
shorta=(short)x;/*把int型變量x強(qiáng)制轉(zhuǎn)換為short型*/
2.4數(shù)組
2.4.1數(shù)組的概念
數(shù)組是相同類型的數(shù)據(jù)按順序組成的一種復(fù)合數(shù)據(jù)類型,通過數(shù)組名加數(shù)組下標(biāo)來使用數(shù)組中的數(shù)據(jù),下標(biāo)從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ù)組有兩種方式:
類型標(biāo)識(shí)符數(shù)組名[];
類型標(biāo)識(shí)符[]數(shù)組名;例如:intabc[];String[]example;myClass[]mc;
聲明二維數(shù)組也有兩種方式:
類型標(biāo)識(shí)符數(shù)組名[][];
類型標(biāo)識(shí)符[][]數(shù)組名;
創(chuàng)建數(shù)組要給出數(shù)組長度并分配空間。一維數(shù)組的創(chuàng)建格式如下:
數(shù)組名=new類型標(biāo)識(shí)符[大小];二維數(shù)組的創(chuàng)建格式如下:
數(shù)組名=new類型標(biāo)識(shí)符[大小][大小];
數(shù)組的聲明和創(chuàng)建也可以合為一步,如下所示:
類型標(biāo)識(shí)符數(shù)組名[]=new類型標(biāo)識(shí)符[大小];
類型標(biāo)識(shí)符數(shù)組名[][]=new類型標(biāo)識(shí)符[大小][大小];2.4.3數(shù)組的初始化和賦值
數(shù)組的初始化有兩種方式:
(1)靜態(tài)初始化:直接在聲明的時(shí)候使用初始化表給數(shù)組的全部或部分元素賦初值。
例如:
int[]a={3,4,5,6};floatb[5]={1.0,2.0};
(2)動(dòng)態(tài)初始化:使用賦值表達(dá)式給數(shù)組的各個(gè)元素賦值。例如:
inta[]=newint[2];
a[0]=1;
a[1]=2;
a[2]=3;
每個(gè)數(shù)組都包含一個(gè)成員變量length,它是在初始化時(shí)設(shè)定的數(shù)組大小。我們可以在數(shù)組名后加.length來訪問該變量。例如,用a.length可以獲取數(shù)組a的大小。
【例2-3】一維數(shù)組應(yīng)用舉例:在給定的一維數(shù)組中找出最大值和最小值。程序運(yùn)行結(jié)果如圖2.3所示。圖2.3一維數(shù)組應(yīng)用舉例2.5運(yùn)算符與表達(dá)式
對(duì)各種類型的數(shù)據(jù)進(jìn)行加工的過程稱為運(yùn)算,表示各
種不同運(yùn)算的符號(hào)稱為運(yùn)算符,參與運(yùn)算的數(shù)據(jù)稱為操作數(shù)。Java語言運(yùn)算符如圖2.4所示。表達(dá)式是用運(yùn)算符把操作數(shù)連接起來的式子,可分為算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、條件表達(dá)式。
2.5.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式
算術(shù)運(yùn)算符如表2.5所示。算術(shù)表達(dá)式是由算術(shù)運(yùn)算符和位運(yùn)算符將操作數(shù)連接組成的表達(dá)式,例如:x+y%z。注意:
(1)兩個(gè)整數(shù)類型的數(shù)據(jù)做除法時(shí),結(jié)果只保留整數(shù)部分。
(2)整數(shù)和浮點(diǎn)數(shù)都能進(jìn)行取余運(yùn)算。
(3)“/”運(yùn)算符,當(dāng)都為整數(shù)時(shí),結(jié)果為整數(shù),有一個(gè)為浮點(diǎn),則為浮點(diǎn)數(shù)。
(4)自增、自減運(yùn)算符只適用于變量,且位于運(yùn)算符的不同側(cè)有不同效果。例如假設(shè)inti=3,j=4,作j=i+++j+++i運(yùn)算后,i的值為5,j的值為12。2.5.2關(guān)系運(yùn)算符和關(guān)系表達(dá)式
關(guān)系運(yùn)算符都是雙目運(yùn)算符,具體內(nèi)容如表2.6所示。利用關(guān)系運(yùn)算符連接的式子稱為關(guān)系表達(dá)式,運(yùn)算結(jié)果是一個(gè)布爾型數(shù)值:true(為真)或者false(為假)。2.5.3邏輯運(yùn)算符和邏輯表達(dá)式
邏輯運(yùn)算符見表2.7。利用邏輯運(yùn)算符將操作數(shù)連接的式子稱為邏輯表達(dá)式。邏輯表達(dá)式參與運(yùn)算的操作數(shù)都是布爾類型的,結(jié)果也是布爾類型。注意:
利用“&&”和“||”執(zhí)行操作時(shí),如果從左邊的表達(dá)式中得到的操作數(shù)能確定運(yùn)算結(jié)果,則不再對(duì)右邊的表達(dá)式進(jìn)行運(yùn)算;利用“&”和“|”執(zhí)行操作時(shí),左右兩邊的表達(dá)式都會(huì)進(jìn)行運(yùn)算。采用“&&”和“||”的目的是為了加快運(yùn)算速度。程序運(yùn)行結(jié)果如圖2.4所示。圖2.4邏輯運(yùn)算符舉例2.5.4移位運(yùn)算符
移位運(yùn)算符都是雙目運(yùn)算符,具體內(nèi)容如表2.8所示。注意:
(1)當(dāng)x是byte、short或int類型數(shù)據(jù)時(shí),系統(tǒng)總是先計(jì)算出n%32的結(jié)果m,然后再進(jìn)行x移位m的運(yùn)算。
(2)當(dāng)x是long類型數(shù)據(jù)時(shí),系統(tǒng)總是先計(jì)算出n%64的結(jié)
果m,然后再進(jìn)行x移位m的運(yùn)算。2.5.5位運(yùn)算符
位運(yùn)算符的具體內(nèi)容見表2.9。
例如:
inti=0xFFFFFFF1;
intj=~i;//最高位取反后為正,j值為14,6^3的結(jié)果為52.5.6條件運(yùn)算符
條件運(yùn)算符為三目運(yùn)算符,其具體形式為
布爾表達(dá)式1?表達(dá)式2:表達(dá)式3(表達(dá)式2和表達(dá)式3的類型必須相同。)
條件運(yùn)算符的執(zhí)行順序是:先求解表達(dá)式1,若值為true則執(zhí)行表達(dá)式2,此時(shí)表達(dá)式2的值作為整個(gè)條件表達(dá)式的值,否則求解表達(dá)式3,將表達(dá)式3的值作為整個(gè)條件表達(dá)式的值。程序運(yùn)行結(jié)果如圖2.5所示。圖2.5條件運(yùn)算符的應(yīng)用2.5.7賦值運(yùn)算符和賦值表達(dá)式
Java語言中,賦值運(yùn)算符是“=”。賦值運(yùn)算符的作用是將賦值運(yùn)算符右邊的一個(gè)數(shù)據(jù)或一個(gè)表達(dá)式的值賦給賦值運(yùn)算符左邊的一個(gè)變量。注意賦值號(hào)左邊必須是變量(即沒有final修飾的變量)。賦值運(yùn)算符組成的表達(dá)式稱為賦值表達(dá)式。賦值運(yùn)算的另一種形式是復(fù)合賦值運(yùn)算符連接起來的表達(dá)式,具體參見表2.10。2.5.8運(yùn)算符的優(yōu)先級(jí)
運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式中不同運(yùn)算執(zhí)行的先后次序。優(yōu)先級(jí)高的先進(jìn)行運(yùn)算,優(yōu)先級(jí)低的后進(jìn)行運(yùn)算。在優(yōu)先級(jí)相同的情況下,由結(jié)合性決定運(yùn)算順序。
最基本的規(guī)律是:域、括號(hào)和數(shù)組下標(biāo)的運(yùn)算優(yōu)先級(jí)最高,接下來依次是單目運(yùn)算、雙目運(yùn)算、三目運(yùn)算,賦值運(yùn)算的優(yōu)先級(jí)最低。運(yùn)算符的優(yōu)先級(jí)具體見表2.11。
2.6語句
2.6.1語句概述
Java程序通過控制語句來執(zhí)行程序流,完成一定的任務(wù)。
Java中的控制語句主要有以下幾類:
(1)分支語句:if-else,switch。
(2)循環(huán)語句:while,do-while,for。
(3)跳轉(zhuǎn)語句:break,continue,return。2.6.2分支語句
分支語句的執(zhí)行流程為:根據(jù)條件表達(dá)式的值選擇語句組的執(zhí)行次序,符合條件表達(dá)式的語句組被執(zhí)行,不符合條件表達(dá)式值的語句組被跳過不執(zhí)行。
條件語句有以下四種基本類型。
1.?if結(jié)構(gòu)
if結(jié)構(gòu)格式如下:
if(布爾表達(dá)式){
語句組;
}
2.?if…else結(jié)構(gòu)
if…else結(jié)構(gòu)格式如下:
if(布爾表達(dá)式){
語句組1;
}
else{
語句組2;
}
3.嵌套if…else結(jié)構(gòu)
嵌套if…else結(jié)構(gòu)格式如下:
if(布爾表達(dá)式1){
語句組1;
}
elseif(布爾表達(dá)式2){
語句組2;
}
…
elseif(布爾表達(dá)式n){
語句組n;
}
else{
語句組n+1;
}注意:
(1)?if括號(hào)中的結(jié)果應(yīng)該為布爾值,否則編譯不會(huì)通過,例如如果x與y是int類型,x=y是賦值語句,其結(jié)果不是布爾值,不能充當(dāng)布爾表達(dá)式;如果它們的類型本身為boolean,則x=y可以充當(dāng)if中的條件。
(2)養(yǎng)成if后面無論是一句還是多句代碼,都寫{}的習(xí)慣。程序運(yùn)行結(jié)果如圖2.6所示。圖2.6if...else結(jié)構(gòu)的應(yīng)用注意:
(1)表達(dá)式的返回值類型必須是這幾種之一:byte、short、int和char,其他類型都不允許。
(2)?case子句中的常量表達(dá)式n必須是常量,而且所有case子句中的值應(yīng)是不同的。
(3)語句塊不需要用?{}?括起來。
(4)?default子句是可選的。
(5)?break語句用來在執(zhí)行完一個(gè)case分支后,使程序跳出switch語句,即終止switch語句的執(zhí)行(在一些特殊情況下,多個(gè)不同的case值要執(zhí)行一組相同的操作,這時(shí)可以不用break)。
(6)可以使用if…else結(jié)構(gòu)實(shí)現(xiàn)switch的所有功能,但是switch結(jié)構(gòu)更加簡練。程序運(yùn)行結(jié)果如圖2.7所示。圖2.7swith結(jié)構(gòu)的應(yīng)用2.6.3循環(huán)語句
1.?while循環(huán)
while循環(huán)(又稱“當(dāng)型循環(huán)”)的執(zhí)行流程為:首先判斷是否滿足條件,若滿足則執(zhí)行循環(huán)體,如此重復(fù)執(zhí)行,直到不滿足條件。一般格式如下:
[初始化]
while(布爾表達(dá)式){
循環(huán)體;
循環(huán)變量控制;
}
其流程邏輯關(guān)系如圖2.8所示。圖2.8while循環(huán)示意圖
2.?do…while循環(huán)
do…while循環(huán)(又稱“直到型循環(huán)”)的執(zhí)行流程為:首先執(zhí)行循環(huán)體,然后計(jì)算布爾表達(dá)式,若結(jié)果為true,則繼續(xù)執(zhí)行循環(huán)體,直到布爾表達(dá)式的值為false為止。一般格式如下:
[初始化]
do{
循環(huán)體;
循環(huán)變量控制;
}while(布爾表達(dá)式)
其流程邏輯關(guān)系如圖2.9所示。圖2.9do...while循環(huán)示意圖
3.?for循環(huán)
for循環(huán)的執(zhí)行流程為:首先執(zhí)行初始化操作,然后判斷終止條件是否滿足,如果滿足,則執(zhí)行循環(huán)體中的語句,最后執(zhí)行迭代部分。完成一次循環(huán)后,重新判斷終止條件。
一般格式如下:
for(初值表達(dá)式(初始化);布爾表達(dá)式(終止條件);迭代表達(dá)式){
循環(huán)體;
}
其流程邏輯關(guān)系如圖2.10所示。圖2.10for循環(huán)示意圖注意:
(1)在“初值表達(dá)式”中可以申明作用域?yàn)樵揻or循環(huán)的變量。
(2)“布爾表達(dá)式”為空時(shí),相當(dāng)于值為true。
(3)“初值表達(dá)式”、“布爾表達(dá)式”以及“迭代表達(dá)式”部分都可以為空語句(但分號(hào)不能省),三者均為空的時(shí)候,相當(dāng)于一個(gè)無限循環(huán)。
(4)“初值表達(dá)式”和“迭代表達(dá)式”部分都可以使用逗號(hào)語句執(zhí)行多個(gè)操作。
(5)如果循環(huán)變量在for中定義,變量的作用范圍僅限于循環(huán)體內(nèi)。
(6)?for循環(huán)和while循環(huán)可以相互轉(zhuǎn)換。
【例2-8】for循環(huán)結(jié)構(gòu)的例子:求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);
}
}程序運(yùn)行結(jié)果如圖2.11所示。圖2.11for循環(huán)結(jié)構(gòu)例子該程序等同于以下程序:
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跳轉(zhuǎn)語句
Java語言提供了四種跳轉(zhuǎn)語句:break,continue,return和throw。
跳轉(zhuǎn)語句的功能是改變程序的執(zhí)行流程。break語句可以獨(dú)立使用,而continue語句只能用在循環(huán)結(jié)構(gòu)的循環(huán)體中。
1.?break語句
break語句的作用是退出switch語句或循環(huán)語句,并從緊
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲業(yè)解除勞動(dòng)合同樣本
- 農(nóng)業(yè)技術(shù)聘用合同證明
- 倉儲(chǔ)管理租賃代理合同
- 建筑行業(yè)專家聘用合同
- 小區(qū)玻璃施工合同范例
- 音響技術(shù)員勞動(dòng)合同三篇
- 配電柜制造設(shè)備承攬合同三篇
- 音樂錄制與發(fā)行合同三篇
- 退伙合同協(xié)議書范本甲乙丙
- 集體宿舍租賃合同一般寫幾字
- 2025蛇年春聯(lián)帶橫批
- 湖南工業(yè)大學(xué)《自然語言處理》2022-2023學(xué)年第一學(xué)期期末試卷
- 護(hù)理各類風(fēng)險(xiǎn)評(píng)估及防范
- 電力變壓器生產(chǎn)項(xiàng)目可行性研究報(bào)告
- 充電樁知識(shí)培訓(xùn)
- 2024-2030年地質(zhì)勘察行業(yè)市場(chǎng)前景與發(fā)展預(yù)測(cè)
- 簡諧運(yùn)動(dòng)的回復(fù)力和能量課件
- 中國轉(zhuǎn)型債券白皮書 2024
- 2023-2024年人教版六年級(jí)數(shù)學(xué)上冊(cè)期末試卷及答案
- 高職勞動(dòng)教育學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2023年注冊(cè)城鄉(xiāng)規(guī)劃師考試:城鄉(xiāng)規(guī)劃相關(guān)知識(shí)歷年真題匯編(共388題)
評(píng)論
0/150
提交評(píng)論