java語言基礎(chǔ)課件第2章_第1頁
java語言基礎(chǔ)課件第2章_第2頁
java語言基礎(chǔ)課件第2章_第3頁
java語言基礎(chǔ)課件第2章_第4頁
java語言基礎(chǔ)課件第2章_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章Java語言基礎(chǔ)

?2.1數(shù)據(jù)類型

?2.2運(yùn)算符和表達(dá)式

?2.3流程控制語句

2.1數(shù)據(jù)類型

?2.1.1保留字和標(biāo)識(shí)符

?2.1.2Java數(shù)據(jù)類型

?2.1.3整數(shù)類型

?2.1.4浮點(diǎn)數(shù)類型

?2.1.5布爾型數(shù)據(jù)

?2.1.6字符型數(shù)據(jù)

2.1.1保留字和標(biāo)識(shí)符

1.Java保留字

abstractcontinuefornewswitch

assertdefaultgotopackagesynchronized

booleandoifprivatethis

breakdoubleimplementsprotectedthrow

byteelseimportpublicthrows

caseenuminstanceofreturntransient

catchextendsintshorttry

charfinalinterfacestaticvoid

classfinallylongstrictfpvolatile

constfloatnativesuperwhile

2.1.1保留字和標(biāo)識(shí)符

2.標(biāo)識(shí)符

?標(biāo)識(shí)符用來對(duì)變量、方法、對(duì)象和類進(jìn)行命名。

?Java規(guī)定,標(biāo)識(shí)符必須以字母、下劃線(_)或美元

符⑻開始,其后可以是字母、下劃線、美元符或

數(shù)字,長(zhǎng)度沒有限制。

?如下面是一些合法的標(biāo)識(shí)符:

intTest,Manager_Name,_var,$Var

?Java標(biāo)識(shí)符是區(qū)分大小寫的

?下面兩個(gè)標(biāo)識(shí)符是不同的:

Name,name

2.1.1保留字和標(biāo)識(shí)符

3.Java標(biāo)識(shí)符的命名約定

?(1)類名和接口名一般使用名詞,首字母大寫,若名稱

是多個(gè)單詞的組合,每個(gè)單詞的第一個(gè)字母都應(yīng)該大寫,

如:

classStudent{}

?(2)變量名和方法名一般用小寫英文單詞命名,若名稱

是多個(gè)單詞的組合,則第一個(gè)單詞小寫,后面單詞的第

一個(gè)字母大寫,如:

balanceAccount

?(3)常量名應(yīng)該全部大寫并用下劃線將詞分隔開,如:

MAXARRAYSIZE或MYNAME

2.1.2Java數(shù)據(jù)類型

?在程序設(shè)計(jì)中,數(shù)據(jù)是程序的必要組成部分,也

是程序處理的對(duì)象。不同的數(shù)據(jù)有不同的類型,

不同的數(shù)據(jù)類型有不同的數(shù)據(jù)結(jié)構(gòu)、不同的存儲(chǔ)

方式,并且參與的運(yùn)算也不相同。

?Java語言的數(shù)據(jù)類型可分成兩大類,一類是基本

數(shù)據(jù)類型(primitivedatatype),另一類是引用

數(shù)據(jù)類型(referencedatatype),如表2.1所示:

2.1.2Java數(shù)據(jù)類型

表2.1Java語言的數(shù)據(jù)類型

字節(jié)型byte

短整型short

整數(shù)類型

整型int

長(zhǎng)整型long

基本數(shù)據(jù)類型單浮點(diǎn)型float

浮點(diǎn)類型

雙浮點(diǎn)型double

布爾類型boolean

字符類型char

數(shù)組〃。加e[]類class

引用數(shù)據(jù)類型

接口interface枚舉類型enum

1.基本數(shù)據(jù)類型

表2.2Java基本數(shù)據(jù)類型的寬度和取值范圍

數(shù)據(jù)類型占字節(jié)數(shù)所占位數(shù)數(shù)的范圍

boolean11只有true和false兩個(gè)值

byte18-27?27-1

short216-215?215-1

int432-231?231-1

long864-263?263-1

char2160-65535

float4323.4e-038~3.4e+038

double864L7e-308?L7e+308

2.常量

?常量是在程序運(yùn)行過程中,其值不能被改變的量。

?常量分為常數(shù)常量和標(biāo)識(shí)符常量。

?常數(shù)常量也叫字面值,共有五種類型:整型、

浮點(diǎn)型、布爾型、字符型和字符串常量。

?標(biāo)識(shí)符常量是有名稱的常量,或叫常值變量。

它實(shí)際上是一個(gè)由final關(guān)鍵字修飾的變量,一

旦為其賦值,其值在程序運(yùn)行中就不能被改變。

?常值變量可以在聲明的同時(shí)賦值,也可以稍后賦

值。不管哪種情況,一旦賦值便不允許修改。

3.變量及賦值

?變量是在程序運(yùn)行中其值可以改變的量。

?一個(gè)變量應(yīng)該有一個(gè)名字,在內(nèi)存中占據(jù)一定的

存儲(chǔ)單元。

?根據(jù)變量的數(shù)據(jù)類型分,Java有兩種類型的變量:

基本類型的變量和引用類型的變量。

?基本類型的變量包括數(shù)值型(整數(shù)型和浮點(diǎn)型)、

布爾型和字符型;

?引用類型的變量包括類、接口、枚舉和數(shù)組等。

?變量在使用之前必須定義,變量的定義包括變量

的聲明和賦值。

(1)變量的聲明

?一般格式為:

[modifier]typevarName[二value][,varName[=value

?其中:

?modifier為變量的訪問修飾符

?type為變量的類型

?varName為變量名

?下面聲明了幾個(gè)不同類型的變量:

intage;

doubledl,d2;

charchi,ch2;

(2)變量的賦值

?使用賦值運(yùn)算符“二”來給變量賦值,一般稱為變

量的初始化。

?如下面是幾個(gè)賦值語句:

age=21;

chi='A';

dl=0.618;

?也可以在聲明變量的同時(shí)給變量賦值,例如:

booleanb=false;

2.1.3整數(shù)類型

?Java語言定義了4個(gè)整數(shù)類型,分別是字節(jié)型

(byte)、短整型(short)、整型(int)和長(zhǎng)整型

(long)o這些整數(shù)類型都是有符號(hào)的數(shù),可以為

正值或負(fù)值。每種類型的整數(shù)在JVM中占的位數(shù)不

同,因此能夠表示的數(shù)的范圍也不同。

?注意,不要把整數(shù)類型的寬度理解成實(shí)際機(jī)器的

存儲(chǔ)空間,一個(gè)byte型的數(shù)據(jù)可能使用32位存儲(chǔ)。

1.整型常量

?與C、C++相同,Java的整型常量有三種形式:

(1)十進(jìn)制整數(shù),如0、257、-365o

(2)八進(jìn)制整數(shù),是以0開頭的數(shù),如0124表示十

進(jìn)制數(shù)84,-012表示十進(jìn)制數(shù)-10。

(3)十六進(jìn)制整數(shù),是以O(shè)x或0X開頭的整數(shù),如

0x124表示十進(jìn)制數(shù)的292。

?注意整型常量具有int類型,在JVM中占32位。對(duì)

于long型值,可以在后面加上1或L,表示long型常

量,如量5L,它在JVM中占64位。

2.整型變量

?Java的整型變量有byte、short>int、long四種

類型。

byteb=120;

shorts=1000;

inti=99999999;

long1=-9223372036854775808;//這是

long型數(shù)據(jù)的最小值

?注意,在給變量賦值時(shí),不能超出該數(shù)據(jù)類型所

允許的范圍,否則編譯器給出錯(cuò)誤提示。

程序2.1LightSpeed.java

publicclassLightSpeed(

publicstaticvoidmain(Stringargs[]){

intspeed=300000;

intdays=1000;

longseconds;

longdistance;

seconds=days*24*60*60;

distance=speed*seconds;

System,out.print(/zIn〃+days+〃days〃);

System,out.printin(/zlightwilltravel

〃+distance+〃kilometers./z);

2.1.4浮點(diǎn)數(shù)類型

?浮點(diǎn)類型的數(shù)就是我們所說的實(shí)數(shù)。

?在Java中有兩種浮點(diǎn)類型的數(shù)據(jù):float型和

double型。

?這兩種類型的數(shù)據(jù)在JVM中所占的位數(shù)不同,

float型占32位,double型占64位。

?通常float型稱為單精度浮點(diǎn)數(shù),double型稱為

雙精度浮點(diǎn)數(shù)。

1.浮點(diǎn)型常量

?浮點(diǎn)型常量有兩種表示方法:

?(1)十進(jìn)制數(shù)形式,由數(shù)字和小數(shù)點(diǎn)組成,且

必須有小數(shù)點(diǎn),如0.256、.345、256.>256.0

等。

?(2)科學(xué)記數(shù)法形式,如256e3、256e-3,它

們分別表示256X103和256X10-3。e之前必須

有數(shù)字,e后面的指數(shù)必須為整數(shù)。

2.浮點(diǎn)型變量

?浮點(diǎn)型變量的定義使用float和double關(guān)鍵字,如

下面兩行分別聲明了兩個(gè)浮點(diǎn)型變量f和d:

floatpi=3.1415926F;

doublee=2.71828;

?注意浮點(diǎn)型常量默認(rèn)的類型是double型數(shù)據(jù)。

如果表示float型常量數(shù)據(jù),必須在后面加上F或f,

double型數(shù)據(jù)也可加D或d。

2.1.5布爾型數(shù)據(jù)

?布爾型數(shù)據(jù)用來表示邏輯真或邏輯假,只有兩個(gè)

值true和false,分別表示邏輯真和邏輯假。

?布爾型變量使用boolean關(guān)鍵字聲明,如:

booleant=true;

?所有關(guān)系表達(dá)式的返回值都是布爾型的數(shù)據(jù),如

表達(dá)式10〈9的結(jié)果為false。

?布爾型的數(shù)據(jù)也經(jīng)常用于選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的

條件中。

2.1.6字符型數(shù)據(jù)

?字符型數(shù)據(jù)用來表示一個(gè)字符,其類型為char。

?Java語言使用Unicode字符集來表示字符。

?ASCII碼字符集是Unicode字符集的子集。

1.字符型常量

?Java字符型常量的表示用單引號(hào)將字符括起來,

?大多數(shù)可見的Unicode碼字符都可用這種方式表示,

如,a,、'@'、,我―等。

?對(duì)于不能用單引號(hào)直接括起來的符號(hào),需要使用

轉(zhuǎn)義序列來表示。表示方法是在一對(duì)單引號(hào)內(nèi)用

表示轉(zhuǎn)義,如'表示單引

號(hào)、'\n'表示換行。

?其他常用的轉(zhuǎn)義序列如表2.3所示:

1.字符型常量

表2.3Java常見的轉(zhuǎn)義字符序列

轉(zhuǎn)義字符說明轉(zhuǎn)義字符說明

\'單引號(hào)字符\r回車

\\反斜杠字符\n換行

\f換頁\t水平制表符

\b退格\a響鈴

\ddd3位八進(jìn)制數(shù)所表示的字符

\uxxxx4位十六進(jìn)制數(shù)所表示的字符

2.字符型變量

?字符型變量的類型是char,在內(nèi)存中占16位,它能表示的

數(shù)據(jù)范圍是0?65535。字符型變量的定義如:

charc='a';

charcl=97;

?Java字符型數(shù)據(jù)實(shí)際上是int型數(shù)據(jù)的一個(gè)子集,因此可

以與其他數(shù)值型數(shù)據(jù)混合運(yùn)算。但字符型數(shù)據(jù)不能與int

型數(shù)據(jù)直接相互轉(zhuǎn)換。

?一般情況下,char類型的數(shù)據(jù)可直接轉(zhuǎn)換為int類型的

數(shù)據(jù),而int類型的數(shù)據(jù)轉(zhuǎn)換成char類型的數(shù)據(jù)需要強(qiáng)

制轉(zhuǎn)換。

程序2.2CharBoolDemo.java:?

publicclassCharBoolDemo{

publicstaticvoidmain(Stringargs[]){

booleanb;

charchi,ch2;

chi='Y';

ch2=65;

/z

System,out.printin(chl=〃+chl+〃,ch2=〃+ch2);

b二chi二二ch2;

System,out.printin(b);

ch2++;

System,out.printin(〃ch2=〃+ch2);

2.2運(yùn)算符和表達(dá)式

?2.2.1算術(shù)運(yùn)算符

?2.2.2關(guān)系運(yùn)算符

?2.2.3位運(yùn)算符

?2.2.4邏輯運(yùn)算符

?2.2.5賦值運(yùn)算符

?2.2.6條件運(yùn)算符

?2.2.7運(yùn)算符的優(yōu)先級(jí)

?2.2.8數(shù)據(jù)類型轉(zhuǎn)換

2.2運(yùn)算符和表達(dá)式

?運(yùn)算符和表達(dá)式是Java程序的基本組成要素。

?把表示各種不同運(yùn)算的符號(hào)稱為運(yùn)算符,參與運(yùn)算

的各種數(shù)據(jù)稱為操作數(shù)。

?Java語言提供了多種運(yùn)算符

?按操作數(shù)的個(gè)數(shù)可分為一元運(yùn)算符,如++、一,

二元運(yùn)算符,如*、/、%和三元運(yùn)算符?:o

?按功能分可分為:

?算術(shù)運(yùn)算符如++、--、+、-、*、/、%

關(guān)系運(yùn)算符如>、<、>二、〈二、二二、!二

2.2運(yùn)算符和表達(dá)式

位運(yùn)算符如?、&、I、\〈〈、〉>、?>

?邏輯運(yùn)算符如!、&&、||、&、|、八

賦值運(yùn)算符如二、+二、-二等

?條件運(yùn)算符如?:

?其他運(yùn)算符如分量運(yùn)算符.,下標(biāo)運(yùn)算符口,實(shí)例

運(yùn)算符instanceof,類型轉(zhuǎn)換運(yùn)算符()等。

?表達(dá)式是由運(yùn)算符和操作數(shù)按一定語法規(guī)則組成的符號(hào)序

歹I」。如:a+b、(a+b)*(a—b)、"name=〃+〃李明〃

?每個(gè)表達(dá)式經(jīng)過運(yùn)算后都會(huì)產(chǎn)生一個(gè)確定的值。一個(gè)常量

或一個(gè)變量是最簡(jiǎn)單的表達(dá)式。

2.2.1算術(shù)運(yùn)算符

?算術(shù)運(yùn)算符一般用于對(duì)整型數(shù)和浮點(diǎn)型數(shù)運(yùn)算。

?算術(shù)運(yùn)算符有

?+(加)、-(減)、*(乘)、/(除)和%(取余數(shù))五個(gè)

二元運(yùn)算符

?+(正)、-(負(fù))、++(自增)、--(自減)四個(gè)一元

運(yùn)算符。

1.二元運(yùn)算符

(1)上溢和下溢

?二元運(yùn)算符+、-、*、/和%分別用來進(jìn)行加、減、

乘、除和取余運(yùn)算。

?對(duì)*運(yùn)算符要注意運(yùn)算結(jié)果的溢出的問題

?對(duì)/運(yùn)算符,若兩個(gè)操作數(shù)都為整數(shù),結(jié)果為兩個(gè)

操作數(shù)整除的商,只保留整數(shù)。

?請(qǐng)看下面一段代碼:

(1)上溢和下溢

inta=12345,b=234567,c,d;

longe,f;

c二a*b/b;//a*b超出了int類型,被截短再除以b,結(jié)果不正確

d=a/b*b;〃a/b是整數(shù)除法,結(jié)果為0,因此d的結(jié)果為0

System,out.println(z/c=〃+c);

System,out.println(,zd=〃+d);

e=(long)a*b/b;〃a被轉(zhuǎn)換為長(zhǎng)整型,a*b的類型沒有超

過long的范圍,再除以b得到的結(jié)果正確

f二(long)a/b*b;

System,out.printin(〃e=〃+e);

System,out.println(z/f=〃+f);

(2)取余運(yùn)算符

?%運(yùn)算符用來求兩個(gè)操作數(shù)相除的余數(shù),操作數(shù)可以為整

數(shù),也可以為浮點(diǎn)數(shù)。例如7%4的結(jié)果為3,10.5%2.5的結(jié)

果為0.5o

?當(dāng)操作數(shù)含有負(fù)數(shù)或?qū)Ω↑c(diǎn)數(shù)取余時(shí),規(guī)則是余數(shù)的符號(hào)

與被除數(shù)相同且余數(shù)的絕對(duì)值小于除數(shù)的絕對(duì)值。例如:

10%3=1

10%-3=1

-10%3=-1

-10%-3=-1

(2)取余運(yùn)算符

?在求余運(yùn)算中,如果操作數(shù)涉及到負(fù)數(shù),可通過下

面規(guī)則計(jì)算結(jié)果:先去掉負(fù)號(hào),再計(jì)算結(jié)果,結(jié)果

的符號(hào)取被除數(shù)的符號(hào)。如求-10%-3的結(jié)果,去

掉負(fù)號(hào)求10%3,結(jié)果為1。由于被除數(shù)是負(fù)值,

因此最終結(jié)果為-1。

?在整數(shù)除法及取余運(yùn)算中,如果除數(shù)為0,則拋出

ArithmeticException異常。當(dāng)操作數(shù)有一個(gè)是浮

點(diǎn)數(shù)時(shí),如果除數(shù)為0,除法運(yùn)算將返回Infinity

或-Infinity,求余運(yùn)算將返回NaN。

(3)“+”運(yùn)算符的重載

?“+”運(yùn)算符不但可以用于計(jì)算兩個(gè)數(shù)值型數(shù)據(jù)的

和,還可以用于字符串對(duì)象的連接。例如:

System,out.printin(/zabcz/+〃de〃);

?當(dāng)“+”運(yùn)算符的兩個(gè)操作數(shù)一個(gè)是字符串而另一

個(gè)是其他數(shù)據(jù)類型,系統(tǒng)會(huì)自動(dòng)將另一個(gè)操作數(shù)

轉(zhuǎn)換成字符串,然后再進(jìn)行連接。例如:

intx=1,y=2,z=3;

System,out.printin(z/abcz/+x+y+z);

?注意下面代碼的輸出

System,out.printin(x+y+z+〃abc〃);

2.一元運(yùn)算符

?一元運(yùn)算符+和-用來改變操作數(shù)的符號(hào),

?++和一運(yùn)算符主要用于對(duì)變量的操作,分別稱為自

增和自減運(yùn)算符,

?++表示加1,一表示減1

?它們都可以使用在變量的前面或后面

?放在變量前,表示給變量加1后再使用該變量;

放在變量的后面,表示使用完該變量后再加1。

程序2.3IncrementTest.java

publicclassIncrementTest{

publicstaticvoidmain(Stringargs[]){

inti=3;

ints=(i++)+(i++)+(i++);

System,out.printin(/zs=〃+s+〃,i=〃+i);

i=3;

s=(++i)+(++i)+(++i);

System,out.println(/zs=〃+s+〃,i=〃+i);

2.2.2關(guān)系運(yùn)算符:?

?關(guān)系運(yùn)算符(也稱比較運(yùn)算符),用來比較兩個(gè)值的大

小。

?關(guān)系運(yùn)算符有〉(大于)、<(小于)、〉二(大于等于)、

〈二(小于等于)、一(等于)、!二(不等于)六個(gè)。

?關(guān)系運(yùn)算符一般用來構(gòu)成條件表達(dá)式,比較的結(jié)果返

回true或false。

?Java語言中,任何類型的數(shù)據(jù)(包括基本類型和引用類

型)都可以通過二二和!二比較是否相等,但只有基本類型

的數(shù)據(jù)(布爾型除外)可以比較大小。比較結(jié)果通常作

為判斷條件,如:if(x二二y)

2.2.3位運(yùn)算符

?在Java語言中,有關(guān)位的運(yùn)算有兩類:位邏輯運(yùn)

算(bitwise)和移位運(yùn)算(shift)o

?位邏輯運(yùn)算符包括?(按位取反)、&(按位與)、

I(按位或)和人(按位異或)四種。

?移位運(yùn)算符包括〈<(左移)、〉〉(右移)和〉〉〉(無

符號(hào)右移)三種。位運(yùn)算符只能用于整型數(shù)據(jù),

包括byte、short>int>long和char類型。

?表2.4列出了各種位運(yùn)算符的功能與示例。

2.2.3位運(yùn)算符

表2.4位運(yùn)算符

運(yùn)算符功能示例

?按位取反op

&按位與opl&op2

按位或oplop2

按位異或oplop2

?按位左移opl<<op2

?按位右移opl>>op2

?>按位無符號(hào)右移opl>>>op2

1.位邏輯運(yùn)算符

?位邏輯運(yùn)算是對(duì)一個(gè)整數(shù)的二進(jìn)制位進(jìn)行運(yùn)算。

?設(shè)A、B表示運(yùn)算數(shù)中的一位,位邏輯運(yùn)算的規(guī)則如

表2-7所示:

表2.5位邏輯運(yùn)算的運(yùn)算規(guī)則

AB?AA&BA|BAAB

001000

011011

100011

110110

2.移位運(yùn)算符

?Java語言提供了3個(gè)移位運(yùn)算符:?(左移運(yùn)算符)、

>>(右移運(yùn)算符)和>>>(無符號(hào)右移運(yùn)算符)。

?左移運(yùn)算符〃〈〈〃用來將一個(gè)整數(shù)的二進(jìn)制位序

列左移若干位。移出的高位丟棄,右邊添0。

?右移運(yùn)算符〃〉〉〃用來將一個(gè)整數(shù)的二進(jìn)制位序

列右移若干位。移出的低位丟棄。若為正數(shù),移

入的高位是0,若為負(fù)數(shù),移入的高位是1。

?無符號(hào)右移運(yùn)算符“〉〉〉”也是將一個(gè)整數(shù)的二進(jìn)

制位序列右移若干位。它與右移運(yùn)算符的區(qū)別是,

不論正數(shù)還是負(fù)數(shù)左邊一律移入0。

2.移位運(yùn)算符

?注意位運(yùn)算符和移位運(yùn)算符都只能用于整型數(shù)

或字符型數(shù)據(jù),不能用于浮點(diǎn)型數(shù)據(jù)。

2.2.4邏輯運(yùn)算符

?邏輯運(yùn)算符的運(yùn)算對(duì)象只能是布爾型數(shù)據(jù),并且

運(yùn)算結(jié)果也是布爾型數(shù)據(jù)。

?邏輯運(yùn)算符包括以下幾種:

?!(邏輯非)、&&(短路與)、II(短路或)、&

(邏輯與)、I(邏輯或)、八(邏輯異或)。

?假設(shè)A、B是兩個(gè)邏輯型數(shù)據(jù),則邏輯運(yùn)算的規(guī)

則如表2.6所示:

2.2.4邏輯運(yùn)算符

表2.6邏輯運(yùn)算的運(yùn)算規(guī)則

AB!AA&BA|BAABA&&BA||B

falsefalsetruefalsefalsefalsefalsefalse

falsetruetruefalsetruetruefalsetrue

truefalsefalsefalsetruetruefalsetrue

Htruetruefalsetruetruefalsetruetrue

程序2.4LogicalTest.java

publicclassLogicalTest{

publicstaticvoidmain(Stringargs[]){

intx=1,y=2,z=3;

booleanu=false;

u=!((x>=—y||y++<z—)&&y==z);

System.out.println(Hu=n+u);

y=2;

u=!((x>=-y|y++<z--)&y==z);

System.out.println(nu=n+u);

2.2.5賦值運(yùn)算符

?賦值運(yùn)算符用來為變量賦新值。

?賦值運(yùn)算符主要有兩類,

?一類是使用“二”號(hào)賦值,它簡(jiǎn)單地把一個(gè)表達(dá)

式的值賦給一個(gè)變量或?qū)ο螅?/p>

?另一類是擴(kuò)展的賦值運(yùn)算符。

1.賦值運(yùn)算符

?賦值運(yùn)算符〃=〃的一般格式為:

variableName=expression;

?其功能是將等號(hào)右邊的表達(dá)式的值賦給左邊的變

量。

?賦值運(yùn)算必須是類型兼容的,即左邊的變量必須

能夠接受右邊的表達(dá)式的值,否則會(huì)產(chǎn)生編譯錯(cuò)

誤。如下面的語句會(huì)產(chǎn)生編譯錯(cuò)誤。

intj;

j=3.14;

1.賦值運(yùn)算符

?如果是對(duì)象賦值,則稱為引用賦值。將右邊對(duì)象

的引用值(地址)賦給左邊的變量,這樣,兩個(gè)變

量地址相同,即指向同一對(duì)象。如:

Datedl=newDate();

Dated2=dl;

?此時(shí)dl、d2指向同一個(gè)對(duì)象。

?對(duì)象引用賦值與基本數(shù)據(jù)類型的拷貝賦值是不同

的。

2.擴(kuò)展賦值運(yùn)算符|::

?在賦值運(yùn)算符〃二〃前加上其他運(yùn)算符,即構(gòu)成擴(kuò)

展賦值運(yùn)算符。它的一般格式為:

varop=expression;

?例如,下面兩行是等價(jià)的:

a+=3;

a=a+3;

?擴(kuò)展賦值運(yùn)算符有n個(gè),表2.7給出了所有的擴(kuò)展

的賦值運(yùn)算符及其使用方法。

2.擴(kuò)展賦值運(yùn)算符

表2.7擴(kuò)展的賦值運(yùn)算符

擴(kuò)展賦值運(yùn)算符表達(dá)式等價(jià)表達(dá)式

+=opl+=op2opl=opl+op2

___opl-=op2opl=opl-op2

*=opl*=op2opl=opl*op2

/=opl/=op2opl=opl/op2

%=opl%=op2opl=opl%op2

&—op1&=op2opl=opl&op2

1=op11=op2opl=oplop2

A—oplA=op2opl=oplAop2

?=opl?=op2opl=opl?op2

?=opl?=op2opl=opl?op2

?>=opl?>=op2opl=opl?>op2

2.2.6條件運(yùn)算符

?條件運(yùn)算符又稱三元運(yùn)算符,為?:,格式如下:

expression?expressionl:expression2

?條件運(yùn)算符號(hào)可以使用Java的if~else結(jié)構(gòu)表示。

例如,若a,b,c是int型變量,x是boolean型變

量,語句:

a=x?b:c;

?等價(jià)于下面的結(jié)構(gòu):

if(x){a=b;}

else{a=c;}

2.2.7運(yùn)算符的優(yōu)先級(jí)

?運(yùn)算優(yōu)先級(jí)是指在一個(gè)表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符

又沒有用括號(hào)分隔時(shí),先運(yùn)算哪個(gè)后運(yùn)算哪個(gè)。

?不同的運(yùn)算符有不同的運(yùn)算優(yōu)先級(jí)。表2.8中按優(yōu)

先級(jí)的順序列出了各種運(yùn)算符。

?為了使運(yùn)算次序更明確,一般使用括號(hào)指定運(yùn)算

的次序。

2.2.7運(yùn)算符的優(yōu)先級(jí)

表2.8按優(yōu)先級(jí)從高到低的Java運(yùn)算符

類別運(yùn)算符結(jié)合性

F運(yùn)算符+++—!?(type)從右向左

*/%

算術(shù)運(yùn)算符+—從左向右

移位運(yùn)算符???>從左向右

<<=>>=instanceof

關(guān)系運(yùn)算符==1=從左向右

位運(yùn)算符&八1從左向右

邏輯運(yùn)算符&&11從左向右

條件運(yùn)算符?:從左向右

賦值運(yùn)算符二“op=”從右向左

2.2.8數(shù)據(jù)類型轉(zhuǎn)換

?整型、實(shí)型、字符型數(shù)據(jù)可能需要混合運(yùn)算或相互賦值,

這就涉及到類型轉(zhuǎn)換的問題。

?Java語言是強(qiáng)類型的語言,即每個(gè)常量、變量、表達(dá)式

的值都有固定的類型,而且每種類型都是嚴(yán)格定義的。

?在Java程序編譯階段,編譯器要對(duì)類型進(jìn)行嚴(yán)格的檢查,

任何不匹配的類型都不能通過編譯器。如果一定要把一

個(gè)浮點(diǎn)型的值賦給一個(gè)整型變量,需要進(jìn)行類型轉(zhuǎn)換。

?在Java中,基本數(shù)據(jù)類型的轉(zhuǎn)換分為自動(dòng)類型轉(zhuǎn)換和強(qiáng)

制類型轉(zhuǎn)換兩種。

1.自動(dòng)類型轉(zhuǎn)換

?自動(dòng)類型轉(zhuǎn)換也稱加寬轉(zhuǎn)換,它是指將具有較少

位數(shù)的數(shù)據(jù)類型轉(zhuǎn)換為具有較多位數(shù)的數(shù)據(jù)類型。

例如:

byteb=64;

inti=b;

?將byte型變量b的值賦給int型變量i,這是合法的,

因?yàn)閕nt型數(shù)據(jù)占的位數(shù)多于byte型數(shù)據(jù)占的位數(shù),

這就是自動(dòng)類型轉(zhuǎn)換。

1.自動(dòng)類型轉(zhuǎn)換

表2.9Java允許的自動(dòng)類型轉(zhuǎn)換

原數(shù)據(jù)類型可以轉(zhuǎn)換成的數(shù)據(jù)類型

byteshort>int、long>float、double

shortint、long、float、double

charint>long>float>double

intlong、float、double

longfloat、double

floatdouble

自動(dòng)類型轉(zhuǎn)換

char

byte___short

float___double

圖2-1Java數(shù)據(jù)類型的自動(dòng)轉(zhuǎn)換

1.自動(dòng)類型轉(zhuǎn)換

?當(dāng)使用二元運(yùn)算符對(duì)兩個(gè)值進(jìn)行計(jì)算時(shí),如果兩

個(gè)操作數(shù)類型不同,一般要自動(dòng)轉(zhuǎn)換成更寬的類

型。

?例如,計(jì)算n+f,其中n是整數(shù),f是浮點(diǎn)數(shù),

則結(jié)果為float型數(shù)據(jù)。對(duì)于寬度小于int型數(shù)

據(jù)的運(yùn)算,結(jié)果為int型。

?注意布爾型數(shù)據(jù)不能與其他任何類型的數(shù)據(jù)相互

轉(zhuǎn)換。

2.強(qiáng)制類型轉(zhuǎn)換

?可以將高級(jí)數(shù)據(jù)類型轉(zhuǎn)換為低級(jí)數(shù)據(jù)類型,這時(shí)需要通過

強(qiáng)制類型轉(zhuǎn)換來完成。

?其語法是在圓括號(hào)中給出要轉(zhuǎn)換的目標(biāo)類型,隨后是待轉(zhuǎn)

換的變量名。例如:

byteb=5;

doubled=333.567;

b二(byte)d;〃將double型值強(qiáng)制轉(zhuǎn)換成byte類型值

?由此可見,強(qiáng)制類型轉(zhuǎn)換有時(shí)可能要丟失信息。因此,在

進(jìn)行強(qiáng)制類型轉(zhuǎn)換時(shí)應(yīng)測(cè)試轉(zhuǎn)換后的結(jié)果是否在正確的范

圍。

3.表達(dá)式中類型的自動(dòng)提升

?除了賦值要發(fā)生類型轉(zhuǎn)換外,在含有變量的表達(dá)

式中也有類型轉(zhuǎn)換的問題,如:

bytea=40;

byteb=50;

bytec;

c=a+b;〃編譯錯(cuò)誤

c=(byte)(a+b);

inti=a+b;

3.表達(dá)式中類型的自動(dòng)提升

?但是下面代碼不發(fā)生編譯錯(cuò)誤,即常量表達(dá)式不

發(fā)生類型提升。如:

c=40+50;

?自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換的問題也發(fā)生在對(duì)

象中,對(duì)象的強(qiáng)制類型轉(zhuǎn)換也使用括號(hào)實(shí)現(xiàn)。

?關(guān)于對(duì)象類型的轉(zhuǎn)換問題,請(qǐng)參閱第5章。

2.3流程控制語句

?2.3.1數(shù)據(jù)的輸入輸出

?2.3.2選擇結(jié)構(gòu)

?2.3.3循環(huán)結(jié)構(gòu)

2.3流程控制語句

?流程控制是幾乎所有編程語言的基本功能,它們

主要用來控制程序中各語句的執(zhí)行順序。

?在Java語言中最主要的流程控制方式是結(jié)構(gòu)化程

序設(shè)計(jì)中規(guī)定的三種基本流程結(jié)構(gòu),即順序結(jié)構(gòu)、

選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

2.3.1數(shù)據(jù)的輸入輸出

1.格式化輸出

?在Java1.6中還可以使用一種與C語言的printf()

串?dāng)?shù)類似的格式化輸出方法,定義在

java.io.PrintStream類中,格式如下:

publicPrintStreamprintf(Stringformat,Object…args)

?參數(shù)format是格式控制字符串,其中可以嵌入格

式符(Specifier)指定參數(shù)如何輸出。args為輸

出參數(shù)列表,參數(shù)可以是基本數(shù)據(jù)類型,也可以

是引用數(shù)據(jù)類型。

1.格式化輸出

?格式符的一般格式如下:

%[argument_index^>][flags]^width\[.precision\conversion

?格式符以百分號(hào)(%)開頭,至少包含一個(gè)轉(zhuǎn)義字符,其

他為可選內(nèi)容。

?arg〃勿6771_,77加工用來指定哪個(gè)參數(shù)應(yīng)用該格式。例如,

“%2$”表示列表中的第2個(gè)參數(shù)。

?Flags用來指定一個(gè)選項(xiàng),如“+”表示數(shù)據(jù)前面添一個(gè)加

號(hào),“0”表示數(shù)據(jù)前面用0補(bǔ)充。

?應(yīng)心力和夕recox分別表示數(shù)據(jù)所占最少的字符數(shù)和小數(shù)

的位數(shù)。

?為指定的格式符,表2-10列出了常用的格式符。

1.格式化輸出

表2-10常用的格式符

格式符含義

%d結(jié)果被格式化成十進(jìn)制整數(shù)

%f結(jié)果被格式化成十進(jìn)制浮點(diǎn)數(shù)

%s結(jié)果以字符串輸出

%b結(jié)果以布爾值(true或false)形式輸出

%c結(jié)果為Unicode字符

(1)“%d”格式符

?"%d”用來輸出十進(jìn)制整數(shù),可以有長(zhǎng)度修飾。如果指定

的長(zhǎng)度大于實(shí)際的長(zhǎng)度,則前面補(bǔ)以空格;如果指定的長(zhǎng)

度小于實(shí)際的長(zhǎng)度,則以實(shí)際長(zhǎng)度輸出。例如:

System,out.printf(/zyear二|%6d|%n/z,2005);

輸出結(jié)果為:year二|20051

?"%d”可以應(yīng)用的數(shù)據(jù)類型有byte、Byte、short>Short>

int、Integer、long、Long>Biglntegero

?下面的語句是錯(cuò)誤的,將產(chǎn)生運(yùn)行時(shí)異常。

System,out.printf(〃%8d〃,10.10);

?下面的語句是正確的,因?yàn)閰?shù)被轉(zhuǎn)換成了int數(shù):

System,out.printf(〃%8d〃,(int)10.10);

(2)“%f”格式符

?"%f”用來以小數(shù)方式輸出??梢詰?yīng)用下列浮點(diǎn)型數(shù)

據(jù):float、Float、double>Double>BigDecimalo

可以指定格式寬度和小數(shù)位,也可以僅指定小數(shù)位。

?例如:System,out.printf(z/%8.3f|z/,2005.1234);

輸出結(jié)果為:2005.123

?注意,如果使用格式符“%f”,而參數(shù)為整型數(shù),也

會(huì)產(chǎn)生運(yùn)行時(shí)異常,如下面語句是錯(cuò)誤的,因?yàn)?005

是整數(shù):

System,out.printf(z/%8.3f〃,2005);

(3)“%c”格式符______|r

?“蹌”用來以字符方式輸出。它可以應(yīng)用的數(shù)據(jù)

類型有:char、Character、byte>Byte>short>

Short,這些數(shù)據(jù)類型都能夠轉(zhuǎn)換成Unicode字符。

byteb=65;

System,out.printf(〃b=%c%n〃,b);

輸出結(jié)果為:

b=A

(4)“%b”格式符

?“加”格式符可以用在任何類型的數(shù)據(jù)上。如果參數(shù)值為

null,結(jié)果輸出false;如果參數(shù)是boolean或Boolean類

型的數(shù)據(jù),結(jié)果是調(diào)用String.valueOf()方法的結(jié)果,否

則結(jié)果是true。例如:

byteb=0;Strings=null;

System,out.printf(〃bl=%b%n〃,b);

System,out.printf(〃b2二%b%n〃,true);

System,out.printf(〃b3二%b%n〃,s);

?輸出結(jié)果為:

bl二true

b2二true

b3=false

(5)“%s”格式符

?"%S”格式符也可以用在任何類型的數(shù)據(jù)上。如果參數(shù)值

為null,結(jié)果輸出null;如果參數(shù)實(shí)現(xiàn)了Formatter接口,

結(jié)果是調(diào)用args.formatTo()的結(jié)果,否則,結(jié)果是調(diào)用

args.toStringO的結(jié)果。

?如果將上面代碼中“%b”改為“%s”,輸出結(jié)果為:

bl=0

b2二true

b3二null

2.格式化輸入

?傳統(tǒng)的方法是將標(biāo)準(zhǔn)輸入System,in轉(zhuǎn)換成字符輸

入流,然后從中讀取數(shù)據(jù),再轉(zhuǎn)換成需要的數(shù)據(jù)

類型,這種方法對(duì)初學(xué)者來說較難。

?在java,util包中提供了一個(gè)Scanner類,使用這

個(gè)類可以方便地從鍵盤上讀取各種類型的數(shù)據(jù)。

程序2?5ComputeArea.java

?下面例子從鍵盤上讀取一個(gè)浮點(diǎn)數(shù),然后輸出以

這個(gè)浮點(diǎn)數(shù)為半徑的圓的面積。

importjava.util.Scanner;

publicclassComputeArea{

publicstaticvoidmain(String[]args){

//創(chuàng)建Scanner類的對(duì)象

Scannersc=newScanner(System.in);

System.out.print("請(qǐng)輸入半徑值:”);

doubleradius=sc.nextDouble();

System.out.printf("面積=%10.2f%n",Math.Prradius*radius);

}

)

程序2.6ComputeLoan,java

importjava.util.Scanner;

publicclassComputeLoan{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System,in);

System.out.print(〃請(qǐng)輸入年利率:〃);

doubleannualRate=sc.nextDouble();

doublemonthlyRate=annualRate/1200;//計(jì)算月利率

System.out.print(〃請(qǐng)輸入貸款總額:〃);

doubleloanAmount=sc.nextDouble();

System,out.print(〃請(qǐng)輸入年數(shù):〃);

doublenumberOfYear=sc.nextDouble();

doublemonthlyPayment=1oanAmount*monthlyRate/(1-

1/Math.pow(l+monthlyRate,numberOfYear*12));

doubletotalPayment=monthlyPayment*12*number0fYear;

System,out.printf(〃月支付額:%.2f%nz/,monthlyPayment);

System,out.printf(〃總支付額:%.2f%n〃,totalPayment);

2.3.2選擇結(jié)構(gòu)

?Java語言提供了兩種選擇結(jié)構(gòu),

?if?else結(jié)構(gòu)

?switch結(jié)構(gòu)

1.if?else語句

?可以實(shí)現(xiàn)單分支和雙分支結(jié)構(gòu)。

?if語句的一般格式如下:

if(boolean-express!on)

statements1;

.else

statements2

1.if?else語句

?下面的程序要求從鍵盤上輸入一個(gè)年份,輸出該

年是否是閏年。符合下面兩個(gè)條件之一的年份即

為閏年:①能被4整除,但不能被100整除;②

能被400整除。

程序2.7LeapYear.java

importjava.util.Scanner;

publicclassLeapYear(

publicstaticvoidmain(Stringargs[]){

Scannersc=newScanner(System,in);

System.out.print(〃請(qǐng)輸入年份:〃);

intyear=sc.nextlnt();

if((year%4==0&&year%100!=0)||year%400==0){

System,out.printin(year+/z年是閏年。〃);

}else{

System,out.printin(year+/z年不是閏年?!?;

1.if?else語句

?if語句可以嵌套,但是嵌套必須合理。

?下面的程序輸出給定的3個(gè)整數(shù)的最大值。

程序2.8MaxNumber.java

publicclassMaxNumber{

publicstaticvoidmain(Stringargs[]){

inta=10,b=20,c=30;intmax;

if(a>b){//a大于b的情況

if(a>c)//a再跟c比較

max=a;

else

max=c;

}else{//a小于等于b的情況

if(b>c)//b再跟c比較

max=b;

else

max=c;

)〃〃

System.out.printin(〃Maxnumberis:〃+max);

2.switch語句

?如果需要在多個(gè)選項(xiàng)選擇其中一個(gè),可以使用switch語句。

?switch語句主要實(shí)現(xiàn)多分支結(jié)構(gòu),一般格式如下:

switch(expression){

casevalue1\

statementsequence

[break;]

casevalue2:

statementsequence

[break;]

casevaluew:

statementsequence

[break;]

[default:

statementsequence]

2.switch語句

?程序進(jìn)入switch結(jié)構(gòu),首先計(jì)算expression的值,然后用

該值依次與每個(gè)case中的常量(或常量表達(dá)式)的值進(jìn)行

比較,如果等于某個(gè)值,則執(zhí)行該case子句中后面的語句,

直到遇到break語句為止。

?break語句的功能是退出switch結(jié)構(gòu)。如果在某個(gè)情況處理

結(jié)束后就離開switch結(jié)構(gòu),則必須在該case結(jié)構(gòu)的后面加

上break語句。

?default子句是可選的,當(dāng)表達(dá)式的值與每個(gè)case子句中的

值都不匹配時(shí),就執(zhí)行default后的語句。

?如果表達(dá)式的值與每個(gè)case子句中的值都不匹配,且又沒

有default子句,則程序不執(zhí)行任何操作,而是直接跳出

switch結(jié)構(gòu),執(zhí)行后面的語句。

2.switch語句

?下面的程序是給定學(xué)生的一個(gè)百分制成績(jī),打印

輸出等級(jí)的成績(jī)。等級(jí)的規(guī)定為,90分(包括)

以上的為“A”,80分(包括)以上的為“B”,

60分(包括)以上的為“C”,60分以下為“D”。

程序2.9GradeTest.java

publicclassGradeTest(

publicstaticvoidmain(Stringargs[]){

intgrade=75;charg='';

grade=grade/10;

switch(grade){

default:g二,》;break

case10:

case9:g二'A';break;

case8:g二,B,;break;

case7:

case6:g二'c';break;

System,out.printin(zzYourgradelevelis〃+g);

2.3.3循環(huán)結(jié)構(gòu)

?在程序設(shè)計(jì)中,有時(shí)需要反復(fù)執(zhí)行一段相同的代

碼,這時(shí)就需要使用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。

?Java語言提供了4種循環(huán)語句:

?while循環(huán)

?do-while循環(huán)

?for循環(huán)

?增強(qiáng)的for循環(huán)

2.3.3循環(huán)結(jié)構(gòu)

?一般情況下,一個(gè)循環(huán)結(jié)構(gòu)包含四部分內(nèi)容:

①初始化部分(initialization):設(shè)置循環(huán)開始

時(shí)的程序狀態(tài)。

②循環(huán)條件(condition):循環(huán)條件一般是一個(gè)布

爾表達(dá)式,當(dāng)表達(dá)式的值為true時(shí)執(zhí)行循環(huán)體,

為false時(shí)退出循環(huán)。

③循環(huán)體部分(loopbody):需要重復(fù)執(zhí)行的代碼。

④迭代部分(iteration):改變變量的狀態(tài)。

1.while循環(huán)

?while語句是Java最基本的循環(huán)語句,這種循環(huán)是

在某個(gè)條件為true時(shí),重復(fù)執(zhí)行一個(gè)語句或語句

塊。它的一般格式如下:

.initialization]

while(boolean_express!on){

bodyofloop

[iteration]

1.while循環(huán)

?該循環(huán)首先判斷循環(huán)條件,當(dāng)條件為true時(shí),

直反復(fù)執(zhí)行循環(huán)體。這種循環(huán)一般稱為“當(dāng)循

?一般用在循環(huán)次數(shù)不確定的情況下。

?while循環(huán)的執(zhí)行流程如圖2.2所示:

1.while循環(huán)

圖2.2while循環(huán)結(jié)構(gòu)圖2.3do-while循環(huán)結(jié)構(gòu)

程序2.10IncreRate.java

publicclassIncreRate(

publicstaticvoidmain(Stringargs[]){

doublerate=0.078;

intn=0;

doublesum=1.0;

while(sum<2){

sum=sum+sum*rate;

n=n+1;

System,out.printf("year二%d%n〃,n);

System,out.printf("sum=%4.2f%n〃,sum);

2.do-while循環(huán)

?do-while循環(huán)的一般格式如下:

.initialization]

do{

loopbody

[iteration]

)while(termination);

2.do-while循環(huán)

?do-while循環(huán)執(zhí)行過程如圖2.3所示。

?它是先執(zhí)行循環(huán)體,然后計(jì)算條件表達(dá)式

termination0如果表達(dá)式的值為true,則返回到

循環(huán)的開始繼續(xù)循環(huán)體,直到termination的值為

false循環(huán)結(jié)束。

?這種循環(huán)一般稱為“直到型”循環(huán)。該循環(huán)結(jié)構(gòu)

與while循環(huán)結(jié)構(gòu)的不同之處是,do-while循環(huán)至

少執(zhí)行一次循環(huán)體。

程序2.11AvgNumber.java

importjava.util.Scanner;

publicclassAvgNumber{

publicstaticvoidmain(Stringargs[]){

Scannersc=newScanner(System,in);

doublesum=0.0;doubleavg=0.0;intnum=0;

do(

System.out.print(,zPleaseInputaNumber(0exit)”);

doubled=sc.nextDouble();

if(d==0)

break;

else{

sum=sum+d;num=num+1;avg=sum/num;

}

}while(true);

System.out.printf(^Averageof%dnumberis:%.2f%n〃,num,avg);

}}

3.for循環(huán)與增強(qiáng)的for循環(huán)

?for循環(huán)是Java語言中4種循環(huán)結(jié)構(gòu)中功能最強(qiáng),

也是使用最廣泛的循環(huán)結(jié)構(gòu)。

?for循環(huán)的一般格式如下:

for(initialization;termination;

iteration){

loopbody

for循環(huán)

?在for循環(huán)中,initialization為循環(huán)的初始化部分,

termination為循環(huán)的條件,iteration為迭代部分,三部

分需用分號(hào)隔開。

?for循環(huán)開始執(zhí)行時(shí)首先執(zhí)行初始化部分,并且該部分在

整個(gè)循環(huán)中只執(zhí)行一次。在這里可以定義循環(huán)變量并賦初

值,可以定義多個(gè)循環(huán)變量,中間用逗號(hào)分隔。

?接下來判斷循環(huán)的終止條件,若為true則執(zhí)行循環(huán)體部分,

否則退出循環(huán)。

?當(dāng)循環(huán)體執(zhí)行結(jié)束后,程序控制返回到迭代部分,執(zhí)行迭

代,然后再次判斷終止條件,若為true則反復(fù)執(zhí)行循環(huán)體。

for循環(huán)

?在初始化部分可以聲明多個(gè)變量,它們的作用域

在循環(huán)體內(nèi),如下面循環(huán)中聲明了兩個(gè)變量i和j。

for(inti=0,j=10;i<j;i++,j—)

?for循環(huán)中的一部分或全部可為空,循環(huán)體也可

為空,但分號(hào)不能省略,如:

for(;;){)

for循環(huán)和while、do?while循環(huán)相互轉(zhuǎn)換

?例如:

for(inti=0,j=10;i<j;i++,j—){

System,out.printin(z/i=〃+i+〃,j=〃+j);

}

?可以轉(zhuǎn)換為下面等價(jià)的while循環(huán)結(jié)構(gòu)。

inti=0,j=10;

while(i<j){

System,out.printin(/zi=〃+i+〃,j=〃+j);

i++;

j—;

增強(qiáng)的for循環(huán)

?在J2SE5.0中,Java語言增加了一種循環(huán)結(jié)構(gòu),

稱為增強(qiáng)的for循環(huán),它主要用于對(duì)數(shù)組和集合對(duì)

象的元素的迭代。

?關(guān)于增強(qiáng)的for循環(huán)將在4.1.2節(jié)中討論。

4.循環(huán)結(jié)構(gòu)與分支結(jié)構(gòu)的嵌套

?下面的程序隨機(jī)產(chǎn)生一個(gè)100?200之間的整數(shù),用

戶從鍵盤上輸入所猜的數(shù),程序顯示是否猜中的

消息,如果沒有猜中要求用戶繼續(xù)猜,直到猜中

為止。

程序2.12GuessNumber.java

importjava.util.Scanner;

publicclassGuessNumber{

publicstaticvoidmain(Stringargs[]){

intmagic=(int)(Math,random()*101)+100;intguess;

Scannersc二newScanner(System,in);

System.out.print(''Inputtheguessnumber:");

guess=sc.nextlnt();

do(

if(guess!=magic){

if(guess>magic)

System.out.print(''Wrong!toohigh.Guessagain:");

else

System.out.print(''Wrong!toolow.Guessagain:");

)

guess=sc.nextlnt();

}while(guess!=magic);

System.out.println(,,Right!\nThenumberis〃+magic);

5.continue語句和break語句

?在Java循環(huán)體中可以使用continue語句和break語

句。這兩個(gè)語句的格式為:

continue;

bre

溫馨提示

  • 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)論