《JAVA語言程序設(shè)計(jì)教程》課件第2章_第1頁
《JAVA語言程序設(shè)計(jì)教程》課件第2章_第2頁
《JAVA語言程序設(shè)計(jì)教程》課件第2章_第3頁
《JAVA語言程序設(shè)計(jì)教程》課件第2章_第4頁
《JAVA語言程序設(shè)計(jì)教程》課件第2章_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論