java 以一个最高有效位为1的二进制数字开始_第02章 Java编程基础
·本章學(xué)習(xí)目標(biāo)
熟悉Java編程的基礎(chǔ)知識(shí)
掌握J(rèn)ava語(yǔ)言的基本數(shù)據(jù)類型、操作符、表達(dá)式
掌握J(rèn)ava程序的流程控制語(yǔ)句
熟悉并學(xué)會(huì)初步使用Java編程環(huán)境
·本章學(xué)習(xí)內(nèi)容
數(shù)據(jù)類型
常量、變量與表達(dá)式
數(shù)據(jù)類型的轉(zhuǎn)換
?數(shù)組
?流程控制語(yǔ)句
§2.1數(shù)據(jù)類型
對(duì)于程序中的數(shù)據(jù),編譯程序會(huì)為其分配一塊內(nèi)存空間,內(nèi)存空間的大小由該數(shù)據(jù)的數(shù)據(jù)類型來(lái)決定。
Java語(yǔ)言的數(shù)據(jù)類型分為兩大類:基本類型(primitive type)和引用類型(reference type),相應(yīng)也就有兩種類型的變量。
2.1.1基本數(shù)據(jù)類型
基本類型是Java語(yǔ)言中預(yù)定義、長(zhǎng)度固定、不能再分的類型,數(shù)據(jù)類型的名字也被當(dāng)作關(guān)鍵字保留,且都小寫(xiě)。
在Java語(yǔ)言中,所有數(shù)據(jù)都必須嚴(yán)格定義其數(shù)據(jù)類型,且所有的變量都必須有初始值或默認(rèn)值。Java語(yǔ)言的基本數(shù)據(jù)類型參見(jiàn)下頁(yè)表。
基本數(shù)據(jù)類型
占內(nèi)存
取值范圍
默認(rèn)值
數(shù)值型
整型
byte
1字節(jié)
- 128 ~ 127
(byte)0
short
2字節(jié)
- 32768 ~ 32767
(short)0
int
4字節(jié)
- 2147483648 ~ 2147483647(即-215?~ 215-1)
0
long
8字節(jié)
- 9223372036854775808L~ 9223372036854775807L(即-231?~ 231-1)
0L
浮點(diǎn)型
float
4字節(jié)
對(duì)于負(fù)數(shù):- 3.402823E38 ~ - 1.401298E-45
對(duì)于正數(shù):1.401298E-45 ~ 3.402823E38
0.0F
double
8字節(jié)
對(duì)于負(fù)數(shù):- 1.79769313486232E308 ~
- 4.94065645841247E-324
對(duì)于正數(shù):4.94065645841247E-324~1.79769313486232E308
0.0
字符型
char
2字節(jié)
unicode字符,用單引號(hào)括起來(lái)
'"u0000'
布爾型
boolean
1字節(jié)
true,false
false
關(guān)于基本數(shù)據(jù)類型作幾點(diǎn)說(shuō)明:
由于字符皆用16個(gè)二進(jìn)制位表示,所以Java語(yǔ)言設(shè)計(jì)了一個(gè)用8個(gè)二進(jìn)制位來(lái)表示的byte數(shù)據(jù)類型,可用來(lái)表示AscII碼。
Java語(yǔ)言中,布爾型(boolean)數(shù)據(jù)不再與整數(shù)相關(guān),而是獨(dú)立作為一種數(shù)據(jù)類型,并且不能與整數(shù)有任何自動(dòng)轉(zhuǎn)換關(guān)系。
Java語(yǔ)言中,char是唯一的無(wú)符號(hào)表示的數(shù)據(jù)類型。如果將char轉(zhuǎn)換為int或者short,很可能得到一個(gè)負(fù)數(shù)。
浮點(diǎn)型的數(shù)據(jù)被0除時(shí)不會(huì)報(bào)錯(cuò),而是輸出“Infinity”,編程時(shí)一定要小心。
與很多其他編程語(yǔ)言中的字符串(String)和數(shù)組不同,Java語(yǔ)言將其作為對(duì)象處理,而不是作為基本數(shù)據(jù)類型。
與基本數(shù)據(jù)類型相對(duì)應(yīng)的是引用數(shù)據(jù)類型即引用變量,包括對(duì)象、字符串、數(shù)組等。例如,Java語(yǔ)言通過(guò)類庫(kù)中定義的String類與StringBuffer類處理字符串,所以字符串具有引用變量的特征。
引用類型的變量是由參數(shù)來(lái)控制的。當(dāng)聲明一個(gè)引用類型的變量之后,內(nèi)存只分配一個(gè)空間用來(lái)存放此變量的地址,當(dāng)調(diào)用它時(shí)只是將此對(duì)象存儲(chǔ)地址傳過(guò)去。只有當(dāng)用new命令正式申請(qǐng)內(nèi)存空間或直接初始化時(shí),才會(huì)得到用來(lái)存放其值的空間。
2.1.2引用數(shù)據(jù)類型
引用類型的變量(即對(duì)象)的內(nèi)存分配圖:
2.1.3數(shù)值類型間的轉(zhuǎn)換
Java在運(yùn)算時(shí)總是要進(jìn)行數(shù)據(jù)類型的檢查,如果數(shù)據(jù)類型不一致,則按照某種規(guī)則進(jìn)行轉(zhuǎn)換,然后按照轉(zhuǎn)換后的數(shù)據(jù)類型運(yùn)算。如果這種轉(zhuǎn)換不能進(jìn)行,則會(huì)報(bào)告出錯(cuò)信息。
Java的自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換只能完成由低級(jí)數(shù)據(jù)類型向高級(jí)數(shù)據(jù)類型的轉(zhuǎn)換,也就是只能完成由占用內(nèi)存少的數(shù)據(jù)類型向占用內(nèi)存多的數(shù)據(jù)類型的轉(zhuǎn)換。
設(shè)c = a + b,當(dāng)a與b數(shù)據(jù)類型不同時(shí)自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換如表2-3所示。
操作數(shù)a的數(shù)據(jù)類型
操作數(shù)b的數(shù)據(jù)類型
操作數(shù)b轉(zhuǎn)換后的數(shù)據(jù)類型以及運(yùn)算結(jié)果c的數(shù)據(jù)類型
int
byte或short
int
long
byte或short或int
long
float
byte或short或int或long
float
double
byte或short或int或long
double
int
char
int
如果需要由高級(jí)數(shù)據(jù)類型向低級(jí)數(shù)據(jù)類型的轉(zhuǎn)換,就必須使用強(qiáng)制數(shù)據(jù)類型的轉(zhuǎn)換,具體的方法是在需要轉(zhuǎn)換的數(shù)據(jù)前面加上欲轉(zhuǎn)換的數(shù)據(jù)類型,并用括號(hào)括起來(lái)。
【例】整型與浮點(diǎn)型的轉(zhuǎn)換
float a = 1.414;
int b = (int) a;
其結(jié)果是b被賦值為1。
強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換可能會(huì)導(dǎo)致數(shù)據(jù)精度的降低或?qū)е聰?shù)據(jù)溢出,要慎重使用。上例就是一個(gè)損失了數(shù)據(jù)精度的例子。
除了使用上述方法進(jìn)行強(qiáng)制數(shù)據(jù)類型的轉(zhuǎn)換之外,邏輯型數(shù)據(jù)與其他基本數(shù)據(jù)類型的轉(zhuǎn)換需要一些技巧,下例是邏輯型與整型相互轉(zhuǎn)換的例子。
【例】邏輯型與整型的轉(zhuǎn)換
boolean b = false;
int i = 4;
b = ( i != 0 );????? //把整型轉(zhuǎn)換為邏輯型使b=true
i = ( b ) ? 1 : 0;??? //把邏輯型轉(zhuǎn)換為整型使i=1
2.2標(biāo)識(shí)符和關(guān)鍵字
標(biāo)識(shí)符可以理解為名字。在Java語(yǔ)言中,常量名、變量名、類名、對(duì)象名等都是標(biāo)識(shí)符。標(biāo)識(shí)符的命名遵守以下規(guī)則:
標(biāo)識(shí)符由字母、數(shù)字、下劃線或美元符$組成。
標(biāo)識(shí)符的第一個(gè)字符必須是字母、下劃線或美元符,從第二個(gè)字符開(kāi)始也可以是數(shù)字。
不能以Java的關(guān)鍵字作為標(biāo)識(shí)符。
Java語(yǔ)言對(duì)大小寫(xiě)是敏感的,即大寫(xiě)字符與小寫(xiě)字符被看作是不同的字符。
標(biāo)識(shí)符可以任意長(zhǎng),在機(jī)器內(nèi)部用Unicode字符集表示。
關(guān)鍵字就是保留字,關(guān)鍵字不能再被用做標(biāo)識(shí)符。在Java語(yǔ)言中有近60個(gè)關(guān)鍵字,關(guān)鍵字分為如表所示的幾類。
關(guān)鍵字類型
關(guān)鍵字
內(nèi)構(gòu)類型關(guān)鍵字
boolean true false char byte short int long float double void
表達(dá)式關(guān)鍵字
null this new super
語(yǔ)句關(guān)鍵字
選擇語(yǔ)句
if else switch case break default
循環(huán)語(yǔ)句
for do while continue
控制轉(zhuǎn)移語(yǔ)句
return throw
防衛(wèi)語(yǔ)句
synchronized try catch finally
修飾符關(guān)鍵字
static abstract final private protected public transient volatile
用于類、方法及其相關(guān)目的的關(guān)鍵字
class instanceof throws native
用于擴(kuò)展類構(gòu)筑模塊的關(guān)鍵字
extends interface implements package import
保留日后使用的關(guān)鍵字
cast const future generic goto inner operator outer rest var
2.3常量和變量
2.3.1變量
變量是在程序運(yùn)行過(guò)程中其值能夠改變的量,通常用來(lái)保存計(jì)算結(jié)果或中間數(shù)據(jù)。在Java語(yǔ)言中變量必須先聲明后使用,并且應(yīng)當(dāng)為變量賦初始值。
1.變量的聲明
type identifier1[, identifier2, …]
type為數(shù)據(jù)類型;identifier1[, identifier2,…]為一個(gè)或多個(gè)變量的標(biāo)識(shí)符,即變量名。
【例】聲明變量
int x, y;?????????? ?????//定義x, y兩個(gè)整型變量
float a, b, c;???????????? //定義a, b, c三個(gè)浮點(diǎn)型變量
2.為變量賦初值
定義變量之后要為變量賦初始值,具體做法是使用賦值語(yǔ)句。
【例】為以上定義的整型變量x、y和浮點(diǎn)變量a、b、c賦初值的語(yǔ)句。
x = 5;
y = x + 4;
a = 4.23F;
b = 2 * a;
c = a * a + b;
如果聲明變量以后沒(méi)有賦初值,則會(huì)產(chǎn)生一個(gè)“變量還未被初始化”的錯(cuò)誤。
3.在聲明變量時(shí)為變量賦初值
為變量賦初始值也可以在聲明變量時(shí)進(jìn)行,以下是把以上定義、賦初值兩個(gè)步驟合并的做法。
【例】聲明變量的同時(shí)賦初值
int x=5, y=x+4;????? //定義x, y兩個(gè)整型變量并賦初值
float a=4.23F, b=2*a, c=a*a+b;?//定義a, b, c三個(gè)浮點(diǎn)型變量并賦初值
4.變量的有效范圍與生存周期
變量的有效范圍或生存周期就是聲明該變量時(shí)所在的語(yǔ)句塊,也就是用一對(duì)大括號(hào){}括起的范圍。一旦程序的執(zhí)行離開(kāi)了定義它的語(yǔ)句塊,變量就變得沒(méi)有意義,也就不再被使用了。
2.3.2常量
常量是在程序運(yùn)行過(guò)程中其值始終不改變的量。常量分為直接常量和符號(hào)常量?jī)煞N。直接常量就是不使用任何標(biāo)識(shí)符直接引用其值的常量。
1.直接常量的后綴
使用數(shù)值型直接常量有時(shí)會(huì)引起多義性。例如直接常量“0”,就可能是byte或short或int或long或float或double類型的。為了避免這種情況的發(fā)生不加后綴時(shí)默認(rèn)為int類型,此外Java為long、float和double類型的直接常量規(guī)定了使用后綴的方式,而對(duì)于byte和short類型的直接常量則只能使用強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換,具體內(nèi)容列于下頁(yè)表中。
數(shù)制
表示方法
可表示的數(shù)據(jù)范圍
十進(jìn)制
默認(rèn)的數(shù)制
八進(jìn)制
以0開(kāi)頭的數(shù)字,數(shù)字由0到7組成
0000~0377相當(dāng)于十進(jìn)制的0~255
十六進(jìn)制
以0x開(kāi)頭的數(shù)字,數(shù)字由0到F組成
0x0000~0xFFFF或0x00000000~0xFFFFFFFF
3.轉(zhuǎn)義字符
為了更方便地在字符串中表示一些特殊字符,Java定義了轉(zhuǎn)義字符“"”,緊接在轉(zhuǎn)義字符右邊的字符被解釋成其他含義,或者說(shuō)“"”及其右邊的字符一起代表一個(gè)特殊的字符。這種方法給編程帶來(lái)方便。表2-13給出了轉(zhuǎn)義字符代表的意義。
轉(zhuǎn)義字符
對(duì)應(yīng)的unicode碼
解釋
'"b'
'"u0008'
退格
'"t'
'"u0009'
制表符
'"n'
'"u000A'
換行
'"f'
'"u000C'
表格符
'"r'
'"u000D'
回車
'""'(雙引號(hào))
'"u0022'
雙引號(hào)
'"''(單引號(hào))
'"u0027'
單引號(hào)
'""'
'"u005C'
反斜杠
'"000'(3位八進(jìn)制數(shù))
'"000'
能表示所有AscII字符
'"u0000'(4位十六進(jìn)制數(shù))
'"u0000'
能表示所有unicode字符
4.符號(hào)常量
符號(hào)常量的定義與變量類似,也是先定義一個(gè)標(biāo)識(shí)符,然后通過(guò)標(biāo)識(shí)符讀取其值的常量。符號(hào)常量一經(jīng)定義,其值不能被改變,這是與變量的根本區(qū)別。符號(hào)常量也象變量一樣,每一個(gè)符號(hào)常量都有其數(shù)據(jù)類型和作用范圍。按照一般的習(xí)慣,常量標(biāo)識(shí)符中的英文字母使用大寫(xiě)字母。定義常量的方法是:
final type identifier1 = value1 [, identifier2 = value2, …]
其中修飾符final表示定義的是常量;type為數(shù)據(jù)類型;identifier1, identifier2,…為一個(gè)或多個(gè)常量的標(biāo)識(shí)符,即常量名;value1,value2,…是常量的值。
【例】定義符號(hào)常量
final int x = 100, y = 200;?//定義兩個(gè)整型常量x, y
final float a = 0, b = 2.355;?//定義兩個(gè)浮點(diǎn)型常量a, b
2.4運(yùn)算符
2.4.1算術(shù)運(yùn)算符
算術(shù)運(yùn)算符是大家所熟識(shí)的。主要有兩點(diǎn)需要說(shuō)明:
求余運(yùn)算符%的兩個(gè)操作數(shù),例如a%b中的a與b要求均為整型數(shù)據(jù),其結(jié)果亦為整數(shù)。例如7%3=4,10%5=0。
對(duì)于加減乘除4個(gè)運(yùn)算符,如果兩個(gè)操作數(shù)屬于同一種數(shù)據(jù)類型,其結(jié)果亦為此數(shù)據(jù)類型,如3*5=15,6/2=3。如果a與b的數(shù)據(jù)類型不同,則在Java中占用不同的字節(jié)數(shù),如2*1.4=2.8,3.6/3=1.2等,其結(jié)果的數(shù)據(jù)類型與所占字節(jié)數(shù)多的數(shù)據(jù)類型相同。實(shí)際上Java在執(zhí)行時(shí),先將其中字節(jié)數(shù)少的操作數(shù)保存成與另一個(gè)操作數(shù)相同長(zhǎng)度的形式,然后進(jìn)行運(yùn)算。
運(yùn)算符就是進(jìn)行某種運(yùn)算的標(biāo)識(shí)符號(hào)。
Java語(yǔ)言特別強(qiáng)調(diào)運(yùn)算符執(zhí)行順序的概念。Java語(yǔ)言對(duì)運(yùn)算符的優(yōu)先級(jí)、結(jié)合性與求值順序作了明確的規(guī)定。
算術(shù)運(yùn)算符
說(shuō)明
+
正值運(yùn)算符、加法運(yùn)算符
-
負(fù)值運(yùn)算符、減法運(yùn)算符
*
乘法運(yùn)算符
/
除法運(yùn)算符
%
求余運(yùn)算符
2.4.2自增、自減運(yùn)算符
++、--運(yùn)算符的種類與用法如表所示。這類運(yùn)算符常用于控制循環(huán)變量。
運(yùn)算符
名稱
說(shuō)明
++i
前自增
i參與相關(guān)運(yùn)算之前先加1后參與相關(guān)運(yùn)算
i++
后自增
i先參與其相關(guān)運(yùn)算,然后再使i值加1
--i
前自減
i參與相關(guān)運(yùn)算之前先減1后參與相關(guān)運(yùn)算
i--
后自減
i先參與其相關(guān)運(yùn)算,然后再使i值減1
一般說(shuō)來(lái),++i與i++都是使i=i+1,而--i與i--都是使i=i-1,但注意自增、自減運(yùn)算符放在變量前還是放在變量后的不同。
前自增(減)時(shí),先使變量加1或減1后,再去參與其它運(yùn)算;后自增(減)時(shí),先讓變量參與運(yùn)算,然后再對(duì)當(dāng)時(shí)的變量值加1或減1。
【例】int x = 2; int y = (++x)*3;則x,y的值分別為3,9
先使x加1,然后執(zhí)行乘法運(yùn)算,最后賦值給y。
【例】int x = 2; int y = (x++)*3;則x,y的值分別為3,6
先讓x值參與乘法運(yùn)算,然后x自加1,最后將乘法運(yùn)算結(jié)果賦給y。
自增、自減運(yùn)算符只能用于變量,而不能用于常量和表達(dá)式,如8++與(a+c)++是沒(méi)有意義也是不合法的。
自增、自減運(yùn)算符的結(jié)合性為自右至左,而且只作用于它所操作的變量,絲毫不影響該變量參與其它運(yùn)算。
【例】設(shè)i原值為4,則執(zhí)行k=(i++)+(i++)+(i++);后,i和k的值分別多少?
k值為12,i值為7,這是因?yàn)閕++為變量后自增,所以i先參與其相它運(yùn)算,即k=i+i+i=12。然后,i再執(zhí)行變量后自增運(yùn)算,按執(zhí)行順序自左至右,共自增3次,故i值為7。
同樣道理,設(shè)i值為4,執(zhí)行g(shù)=(++i)+(++i)+(++i);后,i和k的值分別多少?
i值為7,g值為21,即先對(duì)變量i進(jìn)行三次增值后,再執(zhí)行連加運(yùn)算,得到g值。
2.4.3關(guān)系運(yùn)算符
關(guān)系運(yùn)算進(jìn)行比較運(yùn)算,通過(guò)兩個(gè)值的比較,得到一個(gè)boolean(邏輯)型的比較的結(jié)果,其值為“true”或“false”。在Java語(yǔ)言中“true”或“false”不能用“0”或“1”來(lái)表示,而且這兩個(gè)邏輯值必須用小寫(xiě)“true”與“false”。
優(yōu)先級(jí)
運(yùn)算符
名稱
用途舉例
高
instanceof
實(shí)例為
if ( v instanceof convertible)
<
小于
a
>
大于
a>b,45>44
<=
小于等于
a<=b,23<=23
>=
大于等于
a>=b,23>=23
低
==
等于
x==y,x==5
!=
不等于
x!=y,x!=5
關(guān)系運(yùn)算符常常用于邏輯判斷,如用在if結(jié)構(gòu)控制分支和循環(huán)結(jié)構(gòu)控制循環(huán)等處。7個(gè)關(guān)系運(yùn)算符中,等于“==”和不等于“!=”同屬一個(gè)優(yōu)先級(jí),另外5個(gè)運(yùn)算符同屬一個(gè)優(yōu)先級(jí),且前者的優(yōu)先級(jí)別低于后者。在同一優(yōu)先級(jí)中遵循自左至右的執(zhí)行順序。關(guān)系運(yùn)算符常常與下一節(jié)中的邏輯運(yùn)算符混合用。
注意:“==”運(yùn)算符和”=”運(yùn)算符是完全不同的,前者是關(guān)系運(yùn)算符,而后者是賦值運(yùn)算符。
2.4.4邏輯運(yùn)算符
Java語(yǔ)言中,提供了6種邏輯運(yùn)算符,邏輯運(yùn)算符的運(yùn)算結(jié)果為邏輯型“true”或“false”。下表介紹了各種邏輯運(yùn)算符。
優(yōu)先級(jí)
運(yùn)算符
名稱
用法舉例
說(shuō)明
高
!
邏輯非
!a
a為真時(shí)得假,a為假時(shí)得真
低
&
邏輯與
a & b
a和b都為真時(shí)才得真
&&
簡(jiǎn)潔邏輯與
a && b
a和b都為真時(shí)才得真
|
邏輯或
a | b
a和b都為假時(shí)才得假
||
簡(jiǎn)潔邏輯或
a || b
a和b都為假時(shí)才得假
^
邏輯異或
a ^ b
a和b的邏輯值不相同時(shí)的真
邏輯運(yùn)算表達(dá)式的執(zhí)行順序?yàn)樽宰笾劣?#xff0c;邏輯非運(yùn)算符“!”的優(yōu)先級(jí)高于其它邏輯運(yùn)算符。
Java語(yǔ)言中的位運(yùn)算符如下表所示。
優(yōu)先級(jí)
運(yùn)算符
名稱
用法舉例
說(shuō)明
見(jiàn)表
2-8
&
按位與
a & b
兩個(gè)操作數(shù)對(duì)應(yīng)位分別進(jìn)行與運(yùn)算
|
按位或
a | b
兩個(gè)操作數(shù)對(duì)應(yīng)位分別進(jìn)行或運(yùn)算
^
按位異或
a ^ b
兩個(gè)操作數(shù)對(duì)應(yīng)位分別進(jìn)行異或運(yùn)算
~
按位取反
~ a
操作數(shù)各位分別進(jìn)行非運(yùn)算
<<
按位左移
a << b
把第一個(gè)操作數(shù)左移第二個(gè)操作數(shù)指定的位,溢出的高位丟棄,低位補(bǔ)0
>>
帶符號(hào)按位右移
a >> b
把第一個(gè)操作數(shù)右移第二個(gè)操作數(shù)指定的位,溢出的低位丟棄,高位用原來(lái)高位的值補(bǔ)充
>>>
不帶符號(hào)按位右移
a >>> b
把第一個(gè)操作數(shù)右移第二個(gè)操作數(shù)指定的位,溢出的低位丟棄,高位補(bǔ)0
2.4.5位運(yùn)算符
【例】計(jì)算表達(dá)式的值
設(shè)short a = 0x2F34; short b = 0xE5081
(1)求a & b
(2)求a | b
(3)求a ^ b
(4)求a << 3
(5)求b >> 3
(6)求b >>> 3
計(jì)算時(shí)先把a(bǔ)和b化成16位的二進(jìn)制的數(shù),
a = 00101111 00110100,b = 11100101 00001000
然后進(jìn)行按位運(yùn)算后,再換算成16進(jìn)制的數(shù)。
(1)換算成16進(jìn)制,結(jié)果為0x2500。
(2)換算成16進(jìn)制,結(jié)果為0xEF3C。
(3)換算成16進(jìn)制,結(jié)果為0xCA3C。
(4)左移n位相當(dāng)于原數(shù)乘以2的n次冪,并且左移比乘法快,所以有時(shí)用左移代替乘2的n次冪的運(yùn)算。換算成16進(jìn)制,結(jié)果為0x79A0。
(5)換算成16進(jìn)制,結(jié)果為0xFCA1。
(6)換算成16進(jìn)制,結(jié)果為0x1CA1。
如果兩個(gè)不同長(zhǎng)度的數(shù)值做位運(yùn)算,系統(tǒng)將二者的右端(即低位)對(duì)齊,同時(shí)將兩個(gè)操作數(shù)中長(zhǎng)度較短者的高位用0補(bǔ)齊。
2.4.6條件運(yùn)算符
條件運(yùn)算符的使用方式由“?”和“:”連接的三個(gè)操作數(shù)構(gòu)成,一般的形式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3
上式執(zhí)行的順序?yàn)?#xff1a;先求解表達(dá)式1,若為真,取表達(dá)式2的值作為最終結(jié)果返回,若為假,取表達(dá)式3的值為最終結(jié)果返回。
條件運(yùn)算符的優(yōu)先級(jí)僅高于賦值運(yùn)算符。結(jié)合性為自左向右。
【例】設(shè)a = 5,b = 8,c = 1,d = 9,求下式的值。
( a > b ) ? a : ( c > d ) ? c : d
由于結(jié)合性為自右向左,故先計(jì)算( c > d ) ? c : d。因?yàn)? > 9為false,故取d(= 9)為返回結(jié)果。此時(shí),再求( a > b ) ? a : d,即最終結(jié)果為9。
2.4.7賦值運(yùn)算符
賦值運(yùn)算符把常量、變量或表達(dá)式的值賦給一個(gè)變量,賦值運(yùn)算符用等號(hào)“=”表示。為了簡(jiǎn)化、精練程序、提高編譯效率,可以在“=”之前加上其它運(yùn)算符組成擴(kuò)展賦值運(yùn)算符。
使用擴(kuò)展賦值運(yùn)算符的一般形式為:
其的作用相當(dāng)于:=
其中,為“=”。
下頁(yè)表給出了各種擴(kuò)展賦值運(yùn)算符的用法。
擴(kuò)展賦值運(yùn)算符
用法舉例
等效的表達(dá)式
+=
a += b
a= a + b
-=
a -= b
a = a - b
*=
a *= b
a = a * b
/=
a /= b
a = a / b
%=
a %= b
a = a % b
&=
a &= b
a = a & b
|=
a |= b
a = a | b
^=
a ^= b
a = a ^ b
<<=
a <<= n
a = a << n
>>=
a >>= n
a = a >> n
>>>=
a >>>= n
a = a >>> n
賦值運(yùn)算符遵循從右至左的結(jié)合性,看如下的例子。
【例】已知整形變量a,b,c,計(jì)算以下各式的值。
a = b = c = 5;
a = 5 + ( c = 6 ) - ( d = 2 );
a + = a * = b - = ( a = 4 ) * ( b = 2 );
計(jì)算過(guò)程如下:
第一式相當(dāng)于a = ( b = ( c = 5 ) )其結(jié)果使得a、b、c皆為5。
第二式的結(jié)果為d=2,c=6,a=9。
而第三式的計(jì)算過(guò)程是:
第1步:a = 4,b = 2
第2步:b = 2 - 4 * 2 = -6
第3步:a = a * b = 4 * -6 = -24
第4步;a = a + a = -24 - 24 = -48
2.4.8運(yùn)算符的優(yōu)先級(jí)和結(jié)合性
在Java語(yǔ)言中,每個(gè)運(yùn)算符分屬于各個(gè)優(yōu)先級(jí),同時(shí),每個(gè)運(yùn)算符具有特定的結(jié)合性。有的具有左結(jié)合性,即自左至右的結(jié)合原則;有的具有右結(jié)合性,即自右至左的結(jié)合原則。運(yùn)算符在表達(dá)式中的執(zhí)行順序?yàn)?#xff1a;首先遵循優(yōu)先級(jí)原則,優(yōu)先級(jí)高的運(yùn)算符先執(zhí)行。在優(yōu)先級(jí)同級(jí)的運(yùn)算符之間遵守結(jié)合性原則,或自左至右,或自右至左。
下頁(yè)表給出了各種運(yùn)算符的功能說(shuō)明、優(yōu)先級(jí)和結(jié)合性,絕大部分在以上各小節(jié)已經(jīng)分別介紹過(guò)。需要補(bǔ)充說(shuō)明的是,“+”除了作為正號(hào)運(yùn)算符與加法運(yùn)算符之外,還可以起到字符串的鏈接作用。
優(yōu)先級(jí)
運(yùn)算符
結(jié)合性
說(shuō)明
1
,?.?;?( )?[ ]?{}
分隔符
2
++?--?!
右→左
自增、自減、非
3
*?/?%
左→右
乘、除、求余
4
+?-
左→右
加、減
5
<>?>>>
左→右
左移、右移、右移補(bǔ)0
6
Instanceof?< <= > >=
左→右
實(shí)例為、小于、小于等于、大于、大于等于
7
==?!=
左→右
等于、不等于
8
&
左→右
位與
9
^
左→右
位異或
10
|
左→右
位或
11
&&
左→右
與
12
||
左→右
或
13
?:
左→右
條件運(yùn)算
14
=?*=?/=?%=?+=?-= <<=?>>=?>>>=?&=?^=?|=
右→左
賦值
由于嚴(yán)格規(guī)定了優(yōu)先級(jí)和結(jié)合性,Java語(yǔ)言能高效靈活地運(yùn)用這些賦值運(yùn)算符,同時(shí)也會(huì)使初學(xué)者困惑不解。以下再舉兩個(gè)例子說(shuō)明。
【例】已知整形變量i,計(jì)算下式及變量i的值
( i = 4 ) * i++
計(jì)算過(guò)程:執(zhí)行時(shí)變量i首先被賦值為4,后做乘法得16,這是整個(gè)表達(dá)式的值,同時(shí)由于i++使變量i自身的值為5。
從上表中可以看出,邏輯非優(yōu)于算術(shù)運(yùn)算符和關(guān)系運(yùn)算符,而邏輯或和邏輯與低于關(guān)系運(yùn)算符,所以,在進(jìn)行邏輯表達(dá)式的求值時(shí),應(yīng)該注意區(qū)分操作數(shù)是作為算術(shù)運(yùn)算對(duì)象、關(guān)系運(yùn)算對(duì)象還是邏輯運(yùn)算對(duì)象。
【例】求下面表達(dá)式的值
7 > 6 || 4 < 5 && 3.6 > 0.2
計(jì)算過(guò)程:
按照自左至右的執(zhí)行順序,因?yàn)殛P(guān)系運(yùn)算優(yōu)先于邏輯運(yùn)算,先得出7 > 6為true,則無(wú)論邏輯或下一個(gè)操作數(shù)為true還是false,邏輯表達(dá)式7 > 6 || 4 < 5值為真,此時(shí)得到true && 3.6 > 0.2,對(duì)于邏輯與而言,第一個(gè)操作數(shù)為真,還須判斷第二個(gè)操作數(shù)的值才能得出結(jié)果,而3.6 > 0.2得true,表達(dá)式化為true && true,最后得出此表達(dá)式最終結(jié)果為true。
2.5表達(dá)式
表達(dá)式是由運(yùn)算符、操作數(shù)以及方法調(diào)用組成的,用來(lái)說(shuō)明運(yùn)算過(guò)程并返回運(yùn)算結(jié)果。表達(dá)式可以嵌套,表達(dá)式的計(jì)算根據(jù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性進(jìn)行,當(dāng)數(shù)據(jù)類型不一致時(shí)會(huì)自動(dòng)進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,如果轉(zhuǎn)換不能進(jìn)行,就會(huì)產(chǎn)生錯(cuò)誤。
【例】分析以下程序的運(yùn)算結(jié)果
int x = 2000000000, y = 20, z;
z = x * y / 100;
System.out.println("z="+z);
計(jì)算過(guò)程:如果按照一般數(shù)學(xué)運(yùn)算的方法,結(jié)果應(yīng)當(dāng)是2000000000 * 20 / 100 = 400000000,但在計(jì)算機(jī)上運(yùn)行的結(jié)果為13452943。其原因是當(dāng)計(jì)算x * y時(shí),因兩個(gè)操作數(shù)都是int型,結(jié)果也應(yīng)當(dāng)是int型,但40000000000超出int型的范圍,得到的是1345294336,除以100并化成int就是13452943。
若把程序中的第3行改為:z = x * ( y / 100);
也不能得到正確的結(jié)果,只能得到0。其原因是當(dāng)計(jì)算y / 100時(shí)得0.2,結(jié)果應(yīng)當(dāng)是int型的,化成int就是0,所以最后輸出一個(gè)錯(cuò)誤的結(jié)果0。
對(duì)于本例,只要把數(shù)據(jù)類型定義為long就能得到正確的結(jié)果,程序如下:
long x, y, z;
x = 2000000000;
y = 20;
z = x * y / 100;
System.out.println( "z=" + z );
由此看來(lái),在設(shè)計(jì)程序時(shí)寧愿把數(shù)據(jù)類型設(shè)計(jì)得寬裕些,也不要計(jì)劃得過(guò)于緊張,以免這類“莫名其妙”的錯(cuò)誤發(fā)生。
2.6數(shù)組
2.6.1一維數(shù)組、
·一維數(shù)組的聲明
數(shù)組聲明的格式為:
類型數(shù)組名[ ];或者類型[ ]數(shù)組名;
注:數(shù)組名為Java標(biāo)識(shí)符。“[ ]”部分指明該變量是一個(gè)數(shù)組類型變量。
【例】int arr1[];
char[] arr2;
說(shuō)明:聲明了名為arr1的整型數(shù)組和名為arr2的字符型數(shù)組。
·一維數(shù)組的創(chuàng)建
要用new操作來(lái)構(gòu)造數(shù)組,即在數(shù)組聲明之后為數(shù)組元素分配存儲(chǔ)空間,同時(shí)對(duì)數(shù)組元素進(jìn)行初始化。其構(gòu)造格式如下:
數(shù)組名=new類型[數(shù)組長(zhǎng)度];
例如,list=new int[3];
注:它為整型數(shù)據(jù)組list分配3個(gè)整數(shù)元素的內(nèi)存空間,并使每個(gè)元素初值為0。
為簡(jiǎn)化起見(jiàn),還可以把數(shù)組的說(shuō)明和構(gòu)造合在一起,其格式如下:
類型數(shù)組名[ ]= new類型[數(shù)組長(zhǎng)度];
·數(shù)組的初始化
數(shù)組初始化就是為數(shù)組元素指定初始值。通常在構(gòu)造數(shù)組時(shí),Jave會(huì)使每個(gè)數(shù)組元素初始化為一個(gè)默認(rèn)值。但在許多情況下,并不希望數(shù)組的初值為默認(rèn)值,此時(shí),就需要用賦值語(yǔ)句來(lái)對(duì)數(shù)組進(jìn)行初始化。
【例】給一個(gè)長(zhǎng)度為5的整形數(shù)組的元素依次賦值0,1,2,3,4,并倒序打印輸出該數(shù)組的元素值。
public class ArrTest{
public static void main(string args[]){
int i;
int a[] = new int[5];
for(i = 0; i < 5; i++)
a[i] = i;
for(i = a.length -1; i>=0; i--)
System.out.println(“a[“+i+”]=“+a[i]);
}
}
·數(shù)組元素的使用
數(shù)組元素的標(biāo)識(shí)方式為:
數(shù)組名[下標(biāo)]
其中下標(biāo)為非負(fù)的整型常數(shù)或表達(dá)式,其數(shù)據(jù)類型只能為byte,short,int,而不能為long。
若在Java程序中超出了對(duì)數(shù)組下標(biāo)的使用范圍(例如,數(shù)組的最大下標(biāo)為5,但是在程序中存取了下標(biāo)為8或-4的元素),則在運(yùn)行此程序時(shí)將出現(xiàn)如下錯(cuò)誤信息:
Exception in thread″main″
java.lang.ArrayIndexOutOfBoundsException
2.6.2多維數(shù)組
·二維數(shù)組的說(shuō)明與創(chuàng)建
二維數(shù)組說(shuō)明的格式為:類型數(shù)組名[ ] [ ];
例如:int intArray[ ] [ ];
對(duì)二維數(shù)組來(lái)說(shuō),分配內(nèi)存空間有下面幾種方法:
(1)直接為每一維分配空間,如:
int a[ ] [ ] = new int[2] [3];
該語(yǔ)句創(chuàng)建了一個(gè)二維數(shù)組a,其較高一維含兩個(gè)元素,下圖為該數(shù)組的示意圖。
A[0][0]
a[0][1]
a[0][2]
A[1][0]
a[1][1]
a[1][2]
從最高維開(kāi)始,分別為每一維分配空間,如:
int b[ ][ ] = new int[2] [ ];?//最高維含2個(gè)元素,每個(gè)元素為一個(gè)整型數(shù)組
b[0] = new int[3];?//最高維第一個(gè)元素是一個(gè)長(zhǎng)度為3的整型數(shù)組
b[1] = new int[5];?//最高維第二個(gè)元素是一個(gè)長(zhǎng)度為5的整型數(shù)組
該數(shù)組的示意圖為:
b[0][0]
b[0][1]
B[0][2]
b[1][0]
b[1][1]
B[1][2]
b[1][3]
b[1][4]
注意:使用運(yùn)算符new來(lái)分配內(nèi)存時(shí),多維數(shù)組至少要給出最高維的大小。
如果在程序中出現(xiàn)int?a2[ ] [ ] =new int[ ] [ ];
編譯器將要提示如下錯(cuò)誤:
Array dimension missing
·二維數(shù)組元素的初始化
二維數(shù)組元素的初始化有兩種方式:
(1)直接對(duì)每個(gè)元素進(jìn)行賦值;
(2)在說(shuō)明數(shù)組的同時(shí)進(jìn)行初始化。
·二數(shù)組元素的引用
對(duì)二維數(shù)組中每個(gè)元素,其引用方式為:
數(shù)組名[下標(biāo)1] [下標(biāo)2];
其中下標(biāo)1、下標(biāo)2為非負(fù)的整型常數(shù)或表達(dá)式,如:a[2] [3]、cc[i+2][j*3 ](i,j為整數(shù))等。同樣,每一維的下標(biāo)取值都從0開(kāi)始。
Java語(yǔ)言中的程序流程控制結(jié)構(gòu)包括分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、控制轉(zhuǎn)移結(jié)構(gòu)和防護(hù)結(jié)構(gòu)四類,其中防護(hù)結(jié)構(gòu)是Java語(yǔ)言所特有的,將在以后章節(jié)中介紹。本節(jié)先介紹前三類結(jié)構(gòu)。
2.7程序流程控制結(jié)構(gòu)
2.7.1分支結(jié)構(gòu)
Java的選擇結(jié)構(gòu)包括if結(jié)構(gòu)和switch結(jié)構(gòu)兩種。
1.If結(jié)構(gòu)
if結(jié)構(gòu)的基本形式是:
if (條件表達(dá)式)語(yǔ)句1;
[ else語(yǔ)句2; ]
其中,“else語(yǔ)句體”可選。在if語(yǔ)句中條件表達(dá)式的值必須是一個(gè)邏輯型。如果表達(dá)式的值是非邏輯型,系統(tǒng)將會(huì)報(bào)錯(cuò)。語(yǔ)句可以是一條語(yǔ)句,或用“{}”括起來(lái)的多條語(yǔ)句的語(yǔ)句體。
2.嵌套的if結(jié)構(gòu)
嵌套if結(jié)構(gòu)的形式是:
if (條件表達(dá)式1)語(yǔ)句1;
else if (條件表達(dá)式2)語(yǔ)句2;
……
[ else語(yǔ)句3; ]
如果不省略“else語(yǔ)句3;”,這種嵌套的if結(jié)構(gòu)總是只能滿足一個(gè)條件因而只能執(zhí)行一條語(yǔ)句;
如果省略“else語(yǔ)句3;”,這種嵌套的if結(jié)構(gòu)可能滿足一個(gè)條件因而執(zhí)行一條語(yǔ)句,也可能所有條件都不滿足因而一條語(yǔ)句也不執(zhí)行。同基本形式的if結(jié)構(gòu)一樣,各語(yǔ)句可以是一條語(yǔ)句,或是用“{}”括起來(lái)的語(yǔ)句體。
3.switch選擇結(jié)構(gòu)
switch選擇結(jié)構(gòu)的基本形式為:
switch (表達(dá)式){
case值1: {語(yǔ)句體1};[ break;]
case值2: {語(yǔ)句體2};[ break;]
……
case值n: {語(yǔ)句體n}; [break;]
[ defaultl: {語(yǔ)句體n+1}; [break;] ]
}
switch選擇語(yǔ)句的表達(dá)式的值應(yīng)為一個(gè)byte、short、int、char類型的數(shù)值。
switch選擇結(jié)構(gòu)的常用目的就是為了從眾多情況中選擇所希望的一種去執(zhí)行,故而,每一分支語(yǔ)句中都用break語(yǔ)句作為結(jié)束。如果忽略掉break語(yǔ)句,程序?qū)⒗^續(xù)測(cè)試并有可能執(zhí)行下一分支,直到遇到break語(yǔ)句或當(dāng)前switch語(yǔ)句體結(jié)束,這往往不是程序員所希望的。
switch選擇語(yǔ)句中可以有一個(gè)default語(yǔ)句作為其它情況都不匹配時(shí)的出口。
Java語(yǔ)言中有3種形式的循環(huán)結(jié)構(gòu),分別是for結(jié)構(gòu)、while結(jié)構(gòu)以及do…while結(jié)構(gòu)。在Java語(yǔ)言中可以隨時(shí)說(shuō)明局部變量加以利用,并且僅在說(shuō)明的程序塊中有效。循環(huán)結(jié)構(gòu)中常用此類局部變量作為循環(huán)變量,當(dāng)循環(huán)結(jié)束時(shí),局部變量亦被內(nèi)存空間釋放掉,這種動(dòng)態(tài)的分配內(nèi)存的機(jī)制很方便,不易出錯(cuò)且節(jié)約內(nèi)存。
2.7.2循環(huán)結(jié)構(gòu)
1.for循環(huán)結(jié)構(gòu)
for循環(huán)結(jié)構(gòu)的一般格式為:
for (循環(huán)初始值;循環(huán)條件;循環(huán)增長(zhǎng)量){循環(huán)體}
for循環(huán)結(jié)構(gòu)中的初始值、測(cè)試條件及增長(zhǎng)量皆由表達(dá)式組成,三者皆為可選的,既可以在for循環(huán)結(jié)構(gòu)之前設(shè)定好循環(huán)初始值,也可以在for循環(huán)結(jié)構(gòu)體內(nèi)對(duì)增長(zhǎng)量加以設(shè)定。如果連測(cè)試條件都沒(méi)有,那么將是無(wú)窮循環(huán),如:
for( ; ; ){}
“循環(huán)初始值;循環(huán)條件;循環(huán)增長(zhǎng)量”三者之間用分號(hào)“;”隔開(kāi),故每個(gè)部分可以有幾個(gè)表達(dá)式,每個(gè)表達(dá)式之間用逗號(hào)“,”隔開(kāi)。如:
for(i = 0,j = 0; i + j < 100; i++, j += 2)
for結(jié)構(gòu)常常臨時(shí)說(shuō)明局部變量作為循環(huán)變量使用,當(dāng)for循環(huán)結(jié)束時(shí),這種臨時(shí)局部變量即失效。如:
for (int i=0; i<10; i ++) {}
2.while循環(huán)結(jié)構(gòu)
while循環(huán)結(jié)構(gòu)的表達(dá)形式為:
while (循環(huán)條件){語(yǔ)句體}
其中“循環(huán)條件”為一個(gè)邏輯表達(dá)式。
while循環(huán)結(jié)構(gòu)在每一次循環(huán)之前先計(jì)算邏輯表達(dá)式的值,如果為真,執(zhí)行語(yǔ)句體;如果為假,轉(zhuǎn)而執(zhí)行語(yǔ)句體的下一條語(yǔ)句。也就是說(shuō),語(yǔ)句體可能循環(huán)執(zhí)行多次也可能一次也不被執(zhí)行。
3.do…while循環(huán)結(jié)構(gòu)
do…while循環(huán)結(jié)構(gòu)的表達(dá)形式為:
do{
語(yǔ)句體
}while (表達(dá)式);
其中“循環(huán)條件”為一個(gè)邏輯表達(dá)式。與while循環(huán)結(jié)構(gòu)不同的是,do…while循環(huán)結(jié)構(gòu)的語(yǔ)句體至少被執(zhí)行一次。也就是說(shuō),do…while循環(huán)結(jié)構(gòu)先執(zhí)行一次語(yǔ)句體,再計(jì)算邏輯表達(dá)式的值,如果為真,再去執(zhí)行語(yǔ)句體;為假,執(zhí)行下一段程序。
在分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中有時(shí)需要提前繼續(xù)或提前退出分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),為實(shí)現(xiàn)這一功能,要配合使用continue語(yǔ)句和break語(yǔ)句。下面介紹這兩個(gè)語(yǔ)句。
4.continue語(yǔ)句
continue語(yǔ)句有兩種形式:
continue;
continue標(biāo)號(hào);
continue語(yǔ)句的作用就是提前繼續(xù)下一個(gè)循環(huán),即:如果正在進(jìn)行第N次循環(huán),就增加循環(huán)變量,測(cè)試循環(huán)條件,如果符合,進(jìn)入第N+1次循環(huán)。
第二種用法“continue標(biāo)號(hào);”用在希望結(jié)束內(nèi)部循環(huán)而繼續(xù)外部循環(huán),同時(shí)不希望外部循環(huán)從頭開(kāi)始。就事先在外部循環(huán)處加上標(biāo)號(hào),并在循環(huán)體中用“continue標(biāo)號(hào);”語(yǔ)句實(shí)現(xiàn)這種跳轉(zhuǎn)。所謂標(biāo)號(hào)由一個(gè)標(biāo)識(shí)符加冒號(hào)組成。
【例】“continue標(biāo)號(hào)”的使用
計(jì)算年月。變量m表示月份,變量d表示日期。當(dāng)m = 2且d = 28時(shí),執(zhí)行“continue months”語(yǔ)句,跳出內(nèi)部循環(huán),轉(zhuǎn)到標(biāo)號(hào)months處,并開(kāi)始執(zhí)行m = 3的循環(huán)。程序如下:
months:?for(int m=1; m<=12;m++){
for(int d=1; d<=31; d++){
if(m==2&&d==28)
continue months ;
……
}
}
5.break語(yǔ)句
break語(yǔ)句亦有兩種形式:
break;
break標(biāo)號(hào);
break語(yǔ)句用于for、while、do…while與switch結(jié)構(gòu)中,其作用與continue語(yǔ)句正好相反。執(zhí)行break語(yǔ)句時(shí),程序跳轉(zhuǎn)到循環(huán)結(jié)構(gòu)或選擇結(jié)構(gòu)語(yǔ)句塊的結(jié)束處,執(zhí)行下一條語(yǔ)句。
使用第二種用法“break標(biāo)號(hào);”時(shí),應(yīng)在程序中事先定義一個(gè)匹配的標(biāo)號(hào),且此標(biāo)號(hào)必須在一個(gè)完整程序塊開(kāi)始處。這一程序塊可以為任何語(yǔ)句,不一定是循環(huán)語(yǔ)句或switch語(yǔ)句,這與“continue標(biāo)號(hào);”中的標(biāo)號(hào)位置不同,在continue中標(biāo)號(hào)必須在外部循環(huán)開(kāi)始處。
【例】“break標(biāo)號(hào)”的使用。
months: for ( int m = 1; m <= 12, m++ ){
for (int d = 1; d <= 31; d++ ){
if ( cost > budget )
break months;
……
}
}
2.7.3控制轉(zhuǎn)移語(yǔ)句
控制轉(zhuǎn)移語(yǔ)句有以下兩種表達(dá)形式:
return;
return (表達(dá)式);
控制轉(zhuǎn)移語(yǔ)句用于從方法中返回上一級(jí)程序。使用第二種形式能向上一級(jí)程序返回值一個(gè)返回值。若方法的返回值設(shè)定為“void”類型,則只能使用第一種返回形式。
最后,處理異常情況的“throw”語(yǔ)句也屬于控制轉(zhuǎn)移語(yǔ)句,將在第8章進(jìn)行詳細(xì)介紹。
2.7.4其他語(yǔ)句
除了前面介紹的程序結(jié)構(gòu)語(yǔ)句之外Java還使用其他幾種語(yǔ)句,其中有的在前面的例子中已經(jīng)使用過(guò)了,現(xiàn)介紹如下。
1.方法調(diào)用語(yǔ)句
方法調(diào)用語(yǔ)句用于調(diào)用指定對(duì)象的指定方法,一般用法是:
對(duì)象名.方法名(參數(shù)表)
例如:System.out.println ( "Good!" )
就調(diào)用System.out對(duì)象的println方法顯示一個(gè)字符串“Good!”。
2.表達(dá)式語(yǔ)句
表達(dá)式也是Java語(yǔ)句,例如以下語(yǔ)句都是表達(dá)式語(yǔ)句:
a = b + c;
c = (a++) + (++b) + a * 2 + b * b
3.空語(yǔ)句
空語(yǔ)句就是只有一個(gè)分號(hào)的語(yǔ)句,空語(yǔ)句什么也不做,只用在有意識(shí)形成空循環(huán)時(shí)。例如以下語(yǔ)句空循環(huán)100次。
for ( int i = 1 , i <= 100, i++ );
4.復(fù)合語(yǔ)句
復(fù)合語(yǔ)句就是由{}括起來(lái)的由若干語(yǔ)句組成的語(yǔ)句塊。
2.8注釋
注釋是程序員為增強(qiáng)程序可讀性常用的一種輔助手段,良好注釋的習(xí)慣將有助于對(duì)程序的理解和程序設(shè)計(jì)清晰度的提高,便于程序的日后維護(hù)。
Java語(yǔ)言有3種注釋方式:
以“//”開(kāi)始的注釋。即可用于一行的行尾,也可單獨(dú)占用一行。
以“/*”開(kāi)始到下一個(gè)“*/”結(jié)束的注釋,這種注釋往往占用多行。
以“/**”開(kāi)始,到“*/”結(jié)束的注釋。這種注釋是為自動(dòng)產(chǎn)生程序文檔設(shè)計(jì)的。
Java語(yǔ)言中注釋不能嵌套。例如在“/*”與“*/”之間出現(xiàn)了“*/”,就會(huì)產(chǎn)生錯(cuò)誤。
·小結(jié)
本章介紹的內(nèi)容是Java語(yǔ)言的重要組成部分。學(xué)習(xí)本章以后應(yīng)當(dāng)能正確地使用關(guān)鍵字和標(biāo)識(shí)符,能按照語(yǔ)法要求正確地書(shū)寫(xiě)程序。
掌握各種運(yùn)算符的功能、使用方法和優(yōu)先級(jí),能使用常量、變量、運(yùn)算符正確地組成表達(dá)式。
掌握使用if和switch選擇語(yǔ)句形成程序分支的方法。
掌握使用for,while,do結(jié)構(gòu)形成循環(huán)程序的方法。
理解控制轉(zhuǎn)移語(yǔ)句return的兩種用法。
結(jié)合習(xí)題學(xué)習(xí)掌握典型問(wèn)題的編程方法。
posted on 2010-03-19 10:45 libifeng 閱讀(728) 評(píng)論(0) ?編輯 ?收藏 所屬分類: Java課件
總結(jié)
以上是生活随笔為你收集整理的java 以一个最高有效位为1的二进制数字开始_第02章 Java编程基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python列表查找相同字符串_从Pyt
- 下一篇: php 头bom_关于php中bom头的