JAVA程式基本概念及操作_第1頁
JAVA程式基本概念及操作_第2頁
JAVA程式基本概念及操作_第3頁
JAVA程式基本概念及操作_第4頁
JAVA程式基本概念及操作_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第二章JAVA程式基本概念及操作

本章揩介貂一些JAVA的基本概念及^用,跟擘做菜一檬,先瞭解一下一些基本

常^及概念,然彳爰再來一檬一檄穗雪1操作。

2.1第一他程式

雎然遢不知道怎麼做料理,但是先拿^子在^子貍接一接il一攢感受一下^是可以

的。一般的程式有一些服絡可循始彳他一些較小的程式^始穗曾起是一

彳固不金昔的主意。大部分的程式1殳^^籍一^始都曾教^者如何在螯幕上印出文字。

本善亦不免俗。照以下的例子。mTextPad?加在空白文件慮輸入以下程

式。

*道是第一他程式(FirstP.java)

*/

classFirstP{

publicstaticvoidmain(Stringargs[]){

System.ouLprintln(HWhateveritis.H);

}//main

}//FirstP

揩此文件存槽篇firstP.java。舄了軌行道他程式,首先我需要編葬造他程式,W

我1廝翩勺程式傅焉匐窗可理解她軌行的^言。在“Tools”內(nèi)圜睪“Compile

Java”來編群程式。如果出現(xiàn)息,表示你可能有打^字或漏打了什麼束

西,道日寺^回到firstP.java文件慮檢查她修正你的程式。修正完彳爰常青再次儲存加編

IW呈式,直到^息焉止,那我就可以軌行道他I程式了。在“Tools”內(nèi)逗

J?"RunJavaApplication”來軌行程式。此日寺一彳固Dos視窗曾被打^,你所要印

的文字就曾出現(xiàn)在『昆窗桂了。同日寺它曾出現(xiàn)一行息”^按任意維??.”表示

程式已軌行完。

網(wǎng)C:\WINNT\system32bmd.exe-IE

l/hateueritis.

言青接任意維東腳膏...

因篇JAVA是物件蹲向的尚吾言,而每一他物件是由一他彳固的class所系且成,所以我

謂號必須招每一他程式宣告成一他class。上例中的firstP是道他class的名字。富我

儼存槽的畤候必須符程式存成道他名字,也就是要存成firstP.java。同擘IW注意

儲存的槽名一定要跟包含主程式的class同名,否即編群畤曾崖生。

下一行中的public指的是主程式(mainmethod)是公^的,可^任何物件呼叫。同

注意一他程式一定要有一他主程式,而且僮能麴J有一他。富程式褊I?完成要

始軌行,JAVA曾首先偵測到主程式然彳爰由主程式的部分^始軌行。而static指的

是mainmethod是一偃jclassmethod(符曾在彳爰面的章食ti解釋)。Void指的是適值|

method7欠有回停(直。Main指的是適值[method是造fgclass的主程式(main

method)。而Stringargs口是一他字串的矩彈,字串指的是要軌行程式的

argument。

初次兄到道行程式,同擘一定受得非常陌生,不謾沒系,一回生二回熟,^言己得

主程式便是如此撰嘉即可,多嘉黑彳固程式同阜便曾漸漸瞭解其中的含意。

再來就是程式的主颼了。道他程式是一彳固最傕i罩的程式,主ft(body)只有一行。

System.out.println()道彳固指令曾在螯幕上印出一行字。因篇要印出的是一他字串,

所以用曼引虢注意是曼引虢,也碰謾同擘用麗彳固罩引虢繇且合成一假1曼引虢

龜目混珠的,雎然看起來一檬,編群的日寺候便曾崖生。)。因篇我m用

println(),所以印出文字彳爰曾換下一行,如果不換下一行,那我什號可以直接用

System.out.print。即可。

在此^同阜注意一下JAVA程式的系司i(hierarchy),在程式中class焉最上眉的

結橫,其中包含了mainmethod。所以在firstP之彳爰的左大括虢({}及最彳爰的右大括

虢(})之^包含了所有的class之內(nèi)容。而main之彳爰的大括號虎及倒數(shù)第二值I大括虢

琲J包含了主程式中的所有內(nèi)容。每雨彳固相封II的大括虢之^是一他封朗的空惜I,可

以放入其他的封朗空,但是不能輿其他空^交^。道就好比是一彳固大^子貍面可

以有其他的小籃子一檬。而不是速琪扣,相互交^的勾在一起。所以嘉程式的日寺

候,^特別注意大括虢的相婁hffl期系,而且一他左大括虢一定要差右大括

虢。也就是^所有的大括虢數(shù)篇偶數(shù)。

U解

如前所述,在JAVA之中,所有的括虢都是左右相封,在一左一右的括虢內(nèi)包含

了整值[內(nèi)容>例如在class彳爰的大括虢內(nèi)包含主程式(main)>而在main之彳爰的大括

虢內(nèi)包含程式的主醴(body)。一般焉了怕混淆,我福號雪慣在程式中加上注解,以減

少出^的可能。由firstP.java中我1號可以看到〃之彳爰色的字,而〃便是罩行SE解

的嘉法,在〃之彳爰的所有字都是注解(彳堇限那一行)。如果我憑想要有一彳固顯瑰

的注解,好比^只有一句^或是好黑行的注解,我可以用/*U解*/,如firstP.java

中的第一行。在JAVA的褊群程式中,曾自勤跳謾注解的部分,所以I主解不曾被

編群。

2.2建數(shù)(Variables)

燮數(shù)就好比數(shù)擘中的未知數(shù)一般,我憑可以宣告一彳固燮數(shù),而其值跟著程式的要求

而跟著改建,因焉不是定值,所以耦焉燮數(shù)。燮數(shù)一般用來描述罩一的物件,而且

根撼言亥物件的特性而逗用不同的燮數(shù)。例如我要定羲一他燮數(shù)來描述年^,那麼

我lit考用整數(shù),反正我憑也少醵人家^他是18.25羲的。但是如果要用來代表

身高或是醴重的日寺候,就需要用到小數(shù)了,不大可能每他人的身高醴重都是整數(shù)。

定建數(shù)的槿^型魅端看程式的需求以及程式撰嘉具的熬知。

建數(shù)是程式基本的材料,就好比做料理的食材一般,在做料理之前,我年號最好先瞭

解有那些可用的材料,龜肉蛋奶豆^甚至蔬菜水果及各式的^味料,明白各槿食材

的特性,才知道如何虞理及使用他修,而JAVA的材料比之真^的食材就容易多

了,翻來覆去就那麼黑槿,同阜可以很快的熟悉他m。以下焉燮數(shù)槿^的介

貂。

?燮數(shù)的型熊(Type)

在JAVA中,燮數(shù)顯分焉黑彳固基本的型魅>每一槿型魅的建數(shù)有其相封11的資料

形式及估看出意II的大小,我年號需要先瞭解各槿建數(shù)的代表意羲及使用畤檄跟使用方

法,才能正碓且遹富的操作他儼。就好比我1號需要知道各槿食材的腐性,才知道在

怎檬的料理內(nèi)逾合加入。

以下列表列出所有的燮數(shù)型熊'KEYWORD代表燮數(shù)本身的耦呼,道偃維字除

了表示燮數(shù)外,在程式中不得在用來表示其他事物。SIZE代表的是所估的

看出意it大小,我憑知道^^是0跟1的世界,所以每一0位元可以控制焉0或焉

1'所以正好使用二迤位的方法來表示數(shù)字,也就是^8位元可以有2,固燮化。

KEYWORDDESCRIPTIONSIZE/FORMAT

(整黝

byteByte-lengthinteger8-bittwo*scomplement

shortShortinteger16-bittwo'scomplement

intInteger32-bittwo'scomplement

longLonginteger64-bittwo'scomplement

值黝

floatSingle-precisionfloatingpoint32-bitIEEE754

doubleDouble-precisionfloatingpoint64-bitIEEE754

(其他型熊)

charAsinglecharacter16-bitUnicodecharacter

booleanAbooleanvalue(trueorfalse)trueorfalse

上表中的SIZE如果是8-bitetwo'scomplement的意思是8彳固位元用二迤位表示>而

第一他位元用來表示正負虢,也就是,最大篇正的127,而最小的焉-127。所以

如果是整數(shù)int-其大小篇32-bit的二迤位,也就是除了第一他位數(shù)用來代表正

負虢,其繪31偃|位元用來代表數(shù)字,也就是int的箕iHl由-2147483648一直到

2147483647之^。其繪16,32及64位元算法相同。我仰明等上列六^^於數(shù)值的

建數(shù)(sixnumericaldatatypes)的最小值到最大值表列如下:

DATACONTENTMINIMUMVALUEMAXIMUMVALUE

TYPE

byte整數(shù)-128127

short整數(shù)-3276832767

int整數(shù)-21474836482147483647

long整數(shù)-92233720368547758089223372036854775807

float曬-3.40282347E+383.40282347E+38

double儂-1.79769313486231570E+3081.79769313486231570E+308

至於char代表的是字元,例如A或B等,一般用罩引虢來表示。而boolean(布

林)值指的是誕輯的結果,它只有刖槿值,不是true(真)就是false(偏)。

?燮數(shù)的宣告

有了食材的念,我福?要決定哪一檬要用在菜罩上,逗定的材料需注明多少罩位

(如黑克或黑渴匙)。而在JAVA中,要使用的燮數(shù),我必須先宣告,宣告之

彳爰才可以使用。而宣告一他燮數(shù)的必須包含燮數(shù)型魅(type)以及燮數(shù)名耦(name)。

我可用

typevariableName;或是

typevariableName=初始值;

來宣告建數(shù)°

好比^我憑要宣告一彳固整數(shù)燮數(shù)x(此虞X篇此燮數(shù)的名字,道彳固名字同阜可以自

行取決,一般來,名字曾輿此燮數(shù)所要描述的事物有相^,以利瞭解。譬如^是

描述年系己的整數(shù)燮數(shù),便可以用age來常作建數(shù)名。),那我憑便可宣告如下:

如果我要系合他一他初始值1()(也就是一^始X的值篇10,道典數(shù)阜中的代數(shù)相

同,而且同^^注意,因焉X宣告:Mint,所以如果要系合它一彳固初始值的1舌,也必

須系合一偃1整數(shù),而且此整數(shù)必須介於血的數(shù)值靶H內(nèi))-所以我優(yōu)可以嘉

intx=10;

看己得之彳爰必須要有一值1分虢⑴,編群器才知道道一段宣告到此篇止。

因舄JAVA的程式基本上是由上往下軌行,所以如果我年號一^始宣告了x=10;彳爰

來又揩x的值改篇20,我年號只要再加上

x=20;

此日寺x的值便成篇20了,因焉彳爰面道行程式也去操控X,加用其他的值替代了原

先的X值。我以以下的程式^明之。

/*

*VariableDemo1

*用來穗雪燮數(shù)值的指定

*/

classVariabIeDemol{

publicstaticvoidmain(Stringargs[]){

intx=10;

System.out.println(,,x=H+x);

x=20;

System.out.println(,,x=H+x);

}//main

}//VariableDemol

而其輸出的結果如下所示:

PC:\WINNT\system32\cmd.exe

x=10

x=20

吉青按任意維東豳膏???

上例中我先定羲X=10,之彳爰又揩x的值改篇20。注意在JAVA程式中,”="

道彳固符虢加非指的是等於,精硅的耦之篇”指派(Assign)”。也就是^我招

等虢右遏的值指定余合左遏的燮數(shù)。

另一黠要注意的是在System.out.println()的造彳固方法中,小括虢內(nèi)的不同型熊燮敷

可以用“+”虢速結起來。其中“x=”是字串,而x是焉燮數(shù)。道他部分曾在^算

子的部分另做介貂。

接下來我用以下程式來穗智1宣告各他燮數(shù)。

*VariableDemo2

*

*此靶例用來穗看1各槿燮數(shù)的宣告

*其中所使用的MAX_VALUE:物件內(nèi)之常數(shù)(Constant)

*代表^物件的最大值

*/

publicclassVariableDemo2{

publicstaticvoidmain(Stringargs[]){

〃整數(shù)宣告,分別等於^整數(shù)的最大值

bytelargestByte=Byte.MAX_VALUE;

shortlargestShort=Short.MAX_VALUE;

intlargestlnteger=Integer.MAX_VALUE;

longlargestLong=Long.MAX_VALUE;

^宣告,也分別等於^之最大值

floatlargestFloat=Float.MAX_VALUE;

doublelargestDouble=Double.MAX_VALUE;

〃其他燮數(shù)型熊

charaChar='S';

booleanaBoolean=true;

〃列印在螯幕上

System.out.printing'最大的byte=H+largestByte);

System.out.printing最大的short=H+largestShort);

System.out.println("最大的integer=H+largestlnteger);

System.out.printhi("最大的long=H+largestLong);

System.out.printing最大的float="+largestFloat);

System.out.println(''最大的double="+largestDouble);

System.out.println(HaChar=H+aChar);

System.out.printIn(naBoolean="+aBoolean);

}//main()

}/NariableDemo2

?逸出字(EscapeCharacter)

在JAVA程式中,有些字元是舞法直接表示在字串桂的。例如如果我憑在字串桂

面想要有一他曼引虢“,如果我年號直接揩曼引虢加在字串內(nèi),因篇它本身就是用來

代表字串的符虢,那麼編群器便曾揩其熬焉是另一彳固字串的起黠或系冬黠i。如下例:

System.out.printin("Thisbookis"so"beautiful.");

道檬的嘉法非但不能列印出我憑想要的效果,反而遢曾造成。那麼我憑需要如

何做呢?只要在特殊字元的前面加上“'”即可,上例中如果我如此嘉的^便可以

軌行且出現(xiàn)我優(yōu)期待的結果。

System.out.printlnC'Thisbookis\"so\"beautiful.");

以下列出黑槿常兄的逸出字。

換行\(zhòng)n

Tab\t

\\\

\\\\\\

6,

CV

以下用一彳固例子來用熊雪道些EscapeCharacter°

7*

*EscapeCharacterDemo1

*

*此靶例用來穗曾操作EscapeCharacter

*/

classEscapeDemol{

publicstaticvoidmain(Stringargs[]){

System.out.print("\'GonewiththeWind\'is\"such\"abeautifulstoryAn");

System.out.print("Yes.\t\\Youcansaythatagain.\\\\\n");

}//main

}〃EscapeDemol

而其輸出結果符曾如下所示:

因C:\WINNT\system32bmd.exej

pGonewiththeWind*is°suchuabeautifulstory.

Yes.\?oucansaythatagain.W

愉按任意維^錯.一

?命名慣例

一般^我年號要系合class或是方法或是燮數(shù)命名的H寺候,可以隨同擘高典要

給什麼名就給什麼名。就好像你揄到一集小狗,你要叫他小花遢是Lucky都隨便

你。不遇雎然好像可以很自由,不遇其中遢是有一些小小的燒靶跟慣例需要遵循。

1.富我優(yōu)欲宣告一偃1燮數(shù)或是class的畤候,首先必須碓定道他名稠不是JAVA

內(nèi)定的^維字(KeyWords)。道些KeyWords焉保留字>我不II用來常作燮

數(shù)名耦。以下列表列出所有的^^字以供同擘參考。

2.一般在我篇class或是燮數(shù)命名的日寺候,也有一些慣例。通常命名class的畤

候,第一他字大嘉,例如FirstP.java。若是燮數(shù)或者是方法,便以小嘉。

如果此名耦焉麗彳固或刖彳固以上的罩字合而成,那麼彳爰面的字首用大嘉來

分,例如largestlnteger°

3.需要注意的是命名可以有_,數(shù)字,但是名耦之中不得有空白(spaceortab),

而且不可以數(shù)字:。

4.如果是常數(shù)的鼠舌一般^^所有字母都大嘉,例如MAX_NUMBER。遢有如前

所述,富同阜要'決定燮數(shù)或是方法名耦日寺,量逗擇有意羲且輿內(nèi)容相^的

軍字來命名,不要全部都是al,a2,a3.…,道檬到彳爰來曾容易造成混淆,除^

(debug)的日寺候也較焉不易。

KEYWORDS列表

ABSTRACTDOUBLEINTSTRICTFP**

booleanelseinterfacesuper

breakextendslongswitch

bytefinalnativesynchronized

casefinallynewthis

catchfloatpackagethrow

charforprivatethrows

classgoto*protectedtransient

const*ifpublictry

continueimplementsreturnvoid

defaultimportshortvolatile

doinstanceofstaticwhile

2.3Operators&Operands(^g算子^算元)

Operators指的就是^算符虢-好比+,-。而Operand指的就是被^算的柬西,也就

是常數(shù)或者數(shù)字。比如^5+7,5跟7指的就是Operands>而+就是Operator。以下

我fH't?逐一介貂。

2.3.1AssignmentOperators(指定建算子)

之前我^等虢(=)道算子的意羲是指派(Assign),所以也稠之焉

AssignmentOperator(指定^算子)。也就是把等號虎右遏的值指腌左遏。道是程

式撰嘉的基本覲念,而且因焉是此覲念,所以在等虢左遏只能多句有一彳固燮數(shù)。在數(shù)

擘中,我可以嘉如下的式子:

X+Y=10;

10=X+Y;

而適檬的式子,在程式I吾言中都是不成立的,因舄等虢的定羲,我憑只能別在等虢

左遏放一彳固燮數(shù)。所以以下的式子是合法的。

X=10-Y;

Y=10-X;

如果X跟Y都是燮數(shù)的言舌。

如果程式列有x=x+5,那意思解釋制'把原先的x被指定的值加5,然彳爰把造彳固新

值指定系合x?!币簿褪荿,如果原來x=5,那麼x適值1燮數(shù)的值的最新指派值篇原

來的值加上5>也就是^新的x值焉10。

再者,如果程式列有X+=5,那麼也是等同於x=x+5。而”-=,,,,,*=,,,"/=”都是

相罌切1的意思。又如果我年號要表示的是x=x+1,我謂號遢可以曾嘉成x++。若是x

=X-1,那便是X-°

2.3.2ArithmeticOperators(算數(shù)建算子)

ArithmeticOperators就是算數(shù)建算子,便是我年號用來^算數(shù)值的符虢,以下是其列

表。

OPERATORUSEDESCRIPTION

+opl+op2opl加op2

-opl-op2opl減op2

*opl*op2opl乘op2

/opl/op2opl除以op2

%op1%op2opl除以op2的繪數(shù)

造些operator可以落助我優(yōu)做數(shù)^^算,輿一般的數(shù)擘音十算用法相同。1W看以下靶

例:

*ArithmeticDemo1

*

*穗雪加減乘除繪等^算子

*/

classArithmeticDemo1{

publicstaticvoidmain(Stringargs[]){

inta=25;

intb=10;

System.out.println(,,a+b=n+(a+b));

System.out.println(Ha-b=H+(a-b));

System.out.println("a*b=''+(a*b));

System.out.println(Ha/b=M+(a/b));

System.out.println(Ha%b=H+(a%b));

}//main

}//ArithmeticDemo1

而其輸出結果如下所示:

叵1C:\WINNT\system32kmd.exe

35

15

250

azb=5

言青按任意鍵系除膏..

+的使用

在上面的程式中有黑黠需要1寸^,之前我憑擘到+虢可以符字串相加,所以我優(yōu)可

以覲察到,上例中的相加^算有括虢括起來,即(a+b),道是因篇如果沒有的三舌>

程式曾揩其視篇字串相加,而不曾做敷擘建算?;蛘吒静环淌阶沃疅径?/p>

生^^,例如如果我年界次a+b)的括虢去除的1舌。^看下例:

*ArithmeticDemo2

*

*穗窖加虢(+)的使用

*/

classArithmeticDemo2{

publicstaticvoidmain(Stringargs[]){

inta=25;

intb=10;

____________System?out.printlii(''a+b=''+a+b);

System.ouLprintln(Ha-b=H+(a-b));

System.out.println(Ha*b=H+(a*b));

System.outprintln(Ha/b=n+((float)a/(float)b));

System.out.println(**a%b=H+(a%b));

}//main

}//ArithmeticDemo2

而其輸出結果如下所示:

叵]C:\WINNT\system32\cmd.exe

a+b=2510

a-b=15

a*b=250

a/b=2

儲贏意輸唾...

在上例中我可以看到a+b的結果燮成了字串相加,而不是代數(shù)相加了。在

System.out.print?;斯谭椒ㄘ偅就;氐腜rintStream物件可以列印字串>所有燮數(shù))

甚至物件,所以只要用+虢速結,黑乎都可以列印出來。

?Casting

另一黠要注意的是常麗敷相除的日寺候,如果刖者都是int的^>那麼除出來的結果

也是int。因焉所有的小數(shù)部分皆被拾粢。道檬結果便不封了。禱救的辨法便是我

倬號一始便揩a跟b宣告篇double(orfloat),如此便不曾有金昔?;蛘呤俏曳謩e符

燮數(shù)傅換(cast)成double>如此除出來如果不是整數(shù)的1舌便曾是^數(shù)。數(shù)值燮數(shù)相

互輔換(Casting)的方法便是在燮數(shù)之前加上另一燮數(shù)名耦(例如加上double)>來

使原數(shù)值燮數(shù)燮成另一槿數(shù)值燮數(shù)。^看以下的靶例:

*ArithmeticDemo3

*

*用來穗者1數(shù)值燮數(shù)傅換

*/

classArithmeticDemo3{

publicstaticvoidmain(Stringargs[]){

inta=25;

intb=10;

doublec=25;

doubled=10;

System.out.println(Ha/b="+((double)a/(double)b));

System.out.println(nc/d=n+c/d);

}//main

}//ArithmeticDemo3

而其輸出結果如下所示:

CWINNT\system32\cmd.exe

a/b=2.5

c/d=2.5

疑按任意維楣*膏???

適檬結果就望寸了。^注意如果算式較是的1舌,JAVA的^算遢是遵循先乘除彳爰加減

的原劇,常然如果有括虢的^遢是以括虢焉便先。

2.3.3RelationalandConditionalOperators(遍輯輿判算子)

RelationalandConditionalOperators是所備胃的暹輯典判算子,道算子落助

我憑判斷南彳固^算元的相互H彳系,道些相互^^系合我判斷程式欲軌行的方向,是

非常重要的。道些建算子的?;亟Y果都是boolean,也就是^僖回的結果不是true

就是false。以下篇算子的列表。

暹算子使用方法如果以下敘述成立傅回TRUE

>opl>op2opl大於op2

>=op1>=op2opl大於或等於op2

<op1<op2opl小於op2

<=op1<=op2opl小於或等於op2

==op1==op2opl等於op2

!=opl!=op2opl不等於op2

我已知道些^算子在判斷數(shù)之IW的11彳系彳爰,其傅回彳直舄boolean,也就是不是

true,就是false。我謂?可以揩結果的boolean值列印出來。參考以下程式:

7*

*RelationalOperatorDemo1

*

*使用算子加列印出boolean值

*/

classRelationaIOperatorDemol{

publicstaticvoidmain(Stringargs[]){

System.out.println(M5>3是‘'+(5>3));

System.out.printlnC'3>=3是”+(3>=3));

System.out.println(“5v3是“+(5v3));

System.out.println(H5v=3是”+(5<=3));

System.out.println(n5==5是”+(5==5));

System.out.println(n5!=5是"+(5!=5));

}//main

}〃RelationalOperatorDemol

而其輸出結果如下所示:

C:\WINNT\system32\cmd.exe

fe>3true

3>=3是true

5<3是false

b<=3是false

忖==5是true

5?=5息false

威按任意筵*睡s…

官青注意在判斷雨數(shù)是否相等畤'要使用”==",而不是“=",因扁我憑之前^謾“="

的意思是assign,如果使用了,一定是把右遏的值指派系合左遏的值,所以用在判斷

是否相等是不封的,一定要用“=="才能判斷是否相等。

ConditionalOperators是用來泱定制固boolean值之^的居冊系>如上所述5因篇

RelationalOperators的傅回值便是boolean彳直,所以可典RelationalOperators合用來

描述更^^的艮月魅。ConditionalOperators一般^是判斷「且(and)」跟「或(or)」

的■合。以下篇ConditionalOperators的列表。

^算子使用方法傅回TRUE的狀況

&&opl&&op2opl且op2者皆^true。有脩件的檢測op2。

IIoplIIop2opl或op2居true,有修件的揄肌)p2。

J!opop是false

&op1&op2opl且op2雨者皆<^true。一定要檢測op2。

1opl1op2opl或op2卷true,一定要檢測op2。

如果opl跟op2是不同的,也就是高兌,一者篇

Aopl八op2

true,一者焉false。

上表中的&&以及&都是“且”的意思,也就是如果刖遏都是true的言舌,那便傅回

true>也就是你使用(5>7&10<12)或是(5>7&&1()<12)>一檬曾■傅回

false,那麼道麗者有何不同呢?其不同慮便是如果使用&&的1舌,褊群器曾先判斷

&&的左遏,如果左遏焉false>那麼便直接?;豧alse而不再判斷右遏,因禹?;?/p>

true的脩件是「且」的雨遏都得焉true,既然左遏已^是false-那麼瓢^右遏的結

果是什麼,都不影警道彳固式子?;豧alse的結果了。而如果使用&的1舌,即使已系基

知道左遏篇false,遢是曾判斷完右遏才僖回false。因此聰明的同阜已^知道如

果使用&&,其^算畤^曾比&來的短。而II輿I的想法是一檄的,如果已畿判斷出

在II的左手遏是true的^-那麼也就輾須再判斷右手遏的真偏了。

所以在此的建^是^使用&&(且)以及II(或)以及!(非)來判斷真謂。以下在

用^例來加深同阜封遍輯判斷^算子的瞭解。

靶例:

假言殳我福號有5>7,那程式的判斷即篇"傅'(false),其中“〉”是RelationalOperator。如

果我憑有的是5<7-那麼程式便曾判斷其焉'真"(true)。

如果我福肋口上ConditionalOperators,例如(5>7&&10<12)那麼程式便曾判Bf出”

彳蔚'。因舄false&&true=false道些^算可以K助我憑控制程式的軌行,Iff同阜一

定要能多句自己判斷一他[較焉褸雄的式子之真偏??家韵轮欣淌浇福?/p>

7*

*ConditionalOperatorDemo1

*

*穗曾「且」「或」「非」等判斷^算

*/

classConditionalOperatorDemol{

publicstaticvoidmain(Stringargs[]){

inti=5;

intj=7;

booleanbl=true;

booleanb2=false;

System.out.println(5<7&&blII(b2&&bl)&&!(blIIb2));

}//main

y/ConditionalOperatorDemol

造彳固程式?;豻rueo由上例同擘可以覲察到暹輯判斷子有其判斷的J嗔序,一般

,以括虢舄僵先,再來先判斷!,在判斷&&,最彼才是II。

2.3.4其他的Operators

以下篇其他的Operators之列表>我fH曾在下文中伺檄介貂。

建算子功能敘述

的曾嘉。如如果)傅回,否

?:If-elseopl?op2:op3=>oplMtrueop2

切J僖回op3

[]宣告障列,使用障列等功能。

*用來得到或使用物件的元件或方法。

(params)用在方法或建情子的傅入燮數(shù)。

揩某一型熊的燮數(shù)傅化(cast)成篇另一槿型熊。我1號在

(type)

ArithmeticDemo3.java曾有題及。

new建立一他新物件。

用法:Boplinstanceofop2,以》夬定是否物件oplMclassop2的

instanceof

instance。

2.3.5precedence(僵先J嗔序)

precedence指的是operator的侵先J嗔序,跟算數(shù)中的先乘除彳爰加減一檬,

operator一檬有他的侵先“質(zhì)序規(guī)刖-在之前的敘述中我謂號已^提到一些,現(xiàn)在符之

麋整成下表。JAVA程式內(nèi)的所有^算,由此表中表列在上方者焉便先,然彳爰依次

往下。

postfixoperators[]o[params)expr++expr-

unaryoperators++expr-expr^expr-expr~!

creationorcastnew(type)expr

multiplicative*/%

additive+-

shift???>

relational<><=>=instanceof

equality--i-

bitwiseAND&

bitwiseexclusiveORA

bitwiseinclusiveOR1

logicalAND&&

logicalORII

conditional?:

assignment=+=-=*=/=%=&=A=1=?=?=?>=

2.4ControlFlowsStatements(控制敘述)

常我優(yōu)撰嘉一彳固程式,如果沒有控制,那酎哥曾自上而下自左而右依序孰行我優(yōu)

的程式。如果加入controlflow,那黜等曾依撼你的要求來依序孰行,也^先孰

行某段程式碣,也^跳遇某段程式碣,因篇造些控制程式燮化多端。而若是用料

理來比喻,現(xiàn)在我年號要阜的便是一些基本的技能,像是切切菜,切切肉,退退冰,

煎煮炒炸翻樽等技巧。擘含了適些技巧,才能^始根撼自己想要做出來的菜來備殳卷十

菜里。

以下我福號揩曾一一介貂。首先介貂的是if敘述判斷。

2.4.1if/elsestatement

ifstatement可以根撼我福號給予的襟型來判斷是否軌行,程式有逗攆性的軌

行。Ifstatement的格式如下:

if(true/falseexpression){

body

}//if

expression指的是暹輯判斷的敘述,好比^if(x>5),如果建數(shù)x真的大於5,那表

示篇“true”,刖重月醐等曾孰行body內(nèi)的指示,否即便不軌行。在上一管方中我年號提到

的^多算,只要expression焉一他可以?;豣oolean的敘述,便是合法的

(Valid),而只要傅回的是true>程式便曾南I行body的內(nèi)容。

有一黠要特另既兌明的便是,如果body的程式碣僮有一行,例如便是列印出一他字

串,那麼if彳爰面的大括虢可以取消不用。也就是,如果if彳爰面沒有大括號虎,那

若是expression焉真,彳堇曾孰行之彳爰那一行指令。整寸於初阜的同阜來,建^在撰

嘉程式之日寺,最好不要食耀,仔^的揩大括虢括好,曾言襄程式容易明白,減少金昔^

的彝生。

另外襁充一黠i之前^^的,JAVA程式中有一定的陪乘結情(hierarchy)-if

statement之彳爰的大括虢^它自己自成一彳固封朗的空,像是一偃1小^子,放到主

程式(mainmethod)造他串交大的籃子桂,如果遍輯判斷篇真便孰行,若不焉真即跳到

彳爰面相整打I的右大括虢之彳爰,IW注意千離不要輿其他結橫的大括號虎相混淆了。

接下來如果我加上else,那麼結情曾燮成怎檄呢?才票型格式如下:

if(true/falseexpression){

statement1;

}else{

statement2;

}//esle

在if...else的街群性,如果if彳爰的括虢內(nèi)的expression是true>那重月窗便孰行

statement1>如果是false>那麼便軌行statement2。也就是,道睡的情形下,

statement1跟statement2雨者一定有一-彳固曾被款I行,二者必定攆一。

遢有要注意的是,else一定只能跟if速用,不能別罩褐的出現(xiàn)在程式苞1,道是不合

法的。而如果else之上有數(shù)彳固if,那麼else彳堇跟最接近的它的那他上方if速用。我

優(yōu)先看一偃I靶例,再做1寸^。

*IfStatementDemo1

*

*本靶例用來量測身it的BodyMassIndex(BMI)

*BMI指襟用來指出身醴的肥胖情形。

*在此以穗雪if-elsestatment焉穗雪要黠

*/

publicclassIfStatementDemol{

publicstaticvoidmain(Stringargs[]){

doubleheight=165;//身高,罩位焉cm

doubleweight=48;//fl重,單位篇kg

//BodyMassIndex=身高除以醴重(M)的平方

〃用來量測是否遇胖或遇瘦

doublebmi=weight/((height/100)*(height/100));

if(bmi<19)

System.out.println("太瘦了,多吃一黠°");

if(bmi>=19&&bmi<24.9)

System.out.println("好身材,^保持。");

if(bmi>=24.9&&bmi<29.9)

System.out.println。'有黠遇胖>小心°");

if(bmi>=29.9)

System.outprintln("太胖了,^考魔臧肥0");

}//main

}//IfStatementDemol

在適值I例子中,用bmi造彳固指檄來示是否醴重謾重,所以如果bmi介於某一偃1

數(shù)值靶H1內(nèi),便代表某一彳固ft重陷段。上例中^共有四彳固ifstatement,因:M道四值|

if的修件都互相褐立而且判斷內(nèi)容涵蓋整彳固^數(shù)系,所以剛好一定曾有一他狀況被

軌行,事^上我也可以符上例改嘉成以下形式,道檬的形式可以^我優(yōu)肯定曾有

一他月犬沆焉真且被軌行:

*IfStatementDemo2

*

*if...else的嘉法,其中有一穆伏況曾成立

*/

publicclassIfStatementDemo2{

publicstaticvoidmain(Stringargs[]){

doubleheight=165;//身高,罩位焉cm

doubleweight=48;//鶻重,罩位篇kg

//BodyMassIndex=身高除以ft重(M)的平方

〃用來量測是否遇胖或謾瘦

doublebmi=weight/((height/100)*(height/100));

if(bmi<19)

System.out.printin("太瘦了,多吃一黠。”);

elseif(bmi>=19&&bmi<24.9)

System.outprintln("好身材,^保持。”);

elseif(bmi>=24.9&&bmi<29.9)

System.out.printin("有黠謾胖,If小心。”);

else

System.out.printing太胖了,考^減肥?!?;

}//main

}//IfStatementDemo2

此程式的軌行結果輿上例是一檬的,我優(yōu)已知如果ifstatement之彳爰的body只有一

行的^,那麼可以不用大括虢。所以適檬的癮法可以肯定一定其中有一他敘述篇

真。其^原來最^始的完整嘉法^^是如下例所示,同擘一定要想一下造些不同的

嘉法,等瞭解了其中結情之彳爰,便曾受得很容易了。

*IfStatementDemo3

*

*lf...else的完整括虢嘉法

*/

publicclassIfStatementDemo3{

publicstaticvoidmain(Stringargs[]){

doubleheight=165;//身高,罩位篇cm

doubleweight=48;//醴重,軍位篇kg

//BodyMassIndex=身高除以醴重(M)的平方

〃用來量測是否副半或謾瘦

doublebmi=weight/((height/100)*(height/100));

if(bmi<19){

System.out.println("太瘦了,多吃一黠?!?;

}else{

if(bmi>=19&&bmi<24.9)(

System.out.println("好身材>Iff保持。");

}else{

if(bmi>=24.9&&bmi<29.9){

System.out.println("有黠遇胖,It小心°");

}else{

System.out.println("^dg^T,^考^減肥。");

}IIthirdelse

}//secondelse

}//firstelse

}//main

}//IfStatementDemo3

再次強注意^^是if...else的句法或是以彳爰所有其他程式句法,都是一彳固國

境一他國現(xiàn)的常殳溫十,大的H境中包含著小的國現(xiàn),而其中所有曾被孰行的部分

(body)一定要在左右雨彳固大括虢之內(nèi)。下[?焉罩一逗攆的If...else結情,同阜Jg

可由此做底明白其架橫。

此系吉情最彳度只曾有一槿情況曾被軌行。

2.4.2while&do/whileloop(迪圈)

rt■算械程式的一大好慮便是我可以程式落我m重禊不斷做一件相同或是^似的

事,好比果汁械或是切肉械,如果我憑可以用菜刀把蔬果剁成蔬果汁的^,那麼手

大概也斷了吧??墒侨绻泄档?舌,那麼只要按一彳固按就可以完成了。

Loop(迪圈)便是提供^似的功能的。在適檬的情況下,loop的重要性就明的

表現(xiàn)出來0道窗5我優(yōu)y先彳他whileloop介貂起>之彳爰再接著介貂forloop。而

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論