參考菜鳥教程進行編寫
一.基本語法
1.1 基本概念
一個Java程序可以認為是一系列對象的集合,而這些對象通過調用彼此的方法來協(xié)同工作粥谬。
- 對象:對象是類的一個實例痴突,有狀態(tài)和行為喧兄;
- 類:類是一個模板,它描述一類對象的行為和狀態(tài)宅粥。
- 方法:方法就是行為参袱,一個類可以有很多方法。邏輯運以及所有算秽梅、數(shù)據(jù)修改動作都是在方法中完成的抹蚀。
- 實例變量:每個對象都有獨特的實例變量,對象的狀態(tài)由這些實例變量的值決定企垦。
1.2 命名方法及注意事項
- 大小寫敏感:Java是大小寫敏感的况鸣,這就意味著標識符Hello與hello是不同的。
- 類名:對于所有的類來說竹观,類名的首字母應該大寫。如果類名由若干單詞組成,那么每個單詞的首字母應該大寫臭增。
- 方法名:所有的方法名都應該以小寫字母開頭懂酱。如果方法名含有若干單詞,則后面的每個單詞首字母大寫誊抛。
- 包名:包名全部小寫列牺。
- 源文件名:源文件名必須和類名相同。當保存文件的時候拗窃,你應該使用類名作為文件名保存瞎领,文件名的后綴為.java。(如果文件名和類名不相同則會導致編譯錯誤)随夸。
-
主方法入口:所有的Java 程序由
public static void main(String []args)
方法開始執(zhí)行九默。
二.標識符、關鍵字
2.1 標識符
Java所有的組成部分都需要名字宾毒。類名驼修、變量名以及方法名都被稱為標識符。
關于標識符诈铛,應注意以下幾點:
- 所有的標識符都應該以字母(A-Z或者a-z),美元符號($)乙各、或者下劃線(_)開始。
- 首字符之后可以是字母(A-Z或者a-z),美元符號($)幢竹、下劃線(_)或數(shù)字的任何字符組合耳峦。
- 關鍵字不能用作標識符。
- 標識符是大小寫敏感的焕毫。
2.2關鍵字
在java語言中蹲坷,有一些專門的詞匯已經被賦予了特殊的含義,不能再使用這些詞匯來命名標識符咬荷,這些專有詞匯冠句,稱為“關鍵字”。這些保留字不能用于常量幸乒、變量懦底、和任何標識符的名稱。
下表列出了Java關鍵字:
關鍵字 | 含義 |
---|---|
abstract | 表明類或者成員方法具有抽象屬性 |
assert | 斷言罕扎,用來進行程序調試 |
boolean | 基本數(shù)據(jù)類型之一聚唐,布爾類型 |
break | 提前跳出一個塊 |
byte | 基本數(shù)據(jù)類型之一,字節(jié)類型 |
case | 用在switch語句之中腔召,表示其中的一個分支 |
catch | 用在異常處理中杆查,用來捕捉異常 |
char | 基本數(shù)據(jù)類型之一,字符類型 |
class | 聲明一個類 |
const | 保留關鍵字臀蛛,沒有具體含義 |
continue | 回到一個塊的開始處 |
default | 默認亲桦,例如崖蜜,用在switch語句中,表明一個默認的分支 |
do | 用在do-while循環(huán)結構中 |
double | 基本數(shù)據(jù)類型之一客峭,雙精度浮點數(shù)類型 |
else | 用在條件語句中豫领,表明當條件不成立時的分支 |
enum | 枚舉 |
extends | 表明一個類型是另一個類型的子類型,這里常見的類型有類和接口 |
final | 用來說明最終屬性舔琅,表明一個類不能派生出子類等恐,或者成員方法不能被覆蓋,或者成員域的值不能被改變备蚓,用來定義常量 |
finally | 用于處理異常情況课蔬,用來聲明一個基本肯定會被執(zhí)行到的語句塊 |
float | 基本數(shù)據(jù)類型之一,單精度浮點數(shù)類型 |
for | 一種循環(huán)結構的引導詞 |
goto | 保留關鍵字郊尝,沒有具體含義 |
if | 條件語句的引導詞 |
implements | 表明一個類實現(xiàn)了給定的接口 |
import | 表明要訪問指定的類或包 |
instanceof | 用來測試一個對象是否是指定類型的實例對象 |
int | 基本數(shù)據(jù)類型之一二跋,整數(shù)類型 |
interface | 接口 |
long | 基本數(shù)據(jù)類型之一,長整數(shù)類型 |
native | 用來聲明一個方法是由與計算機相關的語言(如C/C++/FORTRAN語言)實現(xiàn)的 |
new | 用來創(chuàng)建新實例對象 |
package | 包 |
private | 一種訪問控制方式:私用模式 |
protected | 一種訪問控制方式:保護模式 |
public | 一種訪問控制方式:共用模式 |
return | 從成員方法中返回數(shù)據(jù) |
short | 基本數(shù)據(jù)類型之一,短整數(shù)類型 |
static | 表明具有靜態(tài)屬性 |
strictfp | 用來聲明FP_strict(單精度或雙精度浮點數(shù))表達式遵循IEEE 754算術規(guī)范 [1] |
super | 表明當前對象的父類型的引用或者父類型的構造方法 |
switch | 分支語句結構的引導詞 |
synchronized | 表明一段代碼需要同步執(zhí)行 |
this | 指向當前實例對象的引用 |
throw | 拋出一個異常 |
throws | 聲明在當前定義的成員方法中所有需要拋出的異常 |
transient | 聲明不用序列化的成員域 |
try | 嘗試一個可能拋出異常的程序塊 |
void | 聲明當前成員方法沒有返回值 |
volatile | 表明兩個或者多個變量必須同步地發(fā)生變化 |
while | 用在循環(huán)結構中 |
三.Java數(shù)據(jù)類型
變量就是申請內存來存儲值虚循,可以理解為變量就是一小塊內存同欠。內存管理系統(tǒng)根據(jù)變量的類型為變量分配存儲空間,分配的空間只能用來儲存該類型數(shù)據(jù)横缔。
3.1 Java的兩大數(shù)據(jù)類型
- 內置數(shù)據(jù)類型
- 引用數(shù)據(jù)類型
3.2 內置數(shù)據(jù)類型
Java語言提供了八種基本類型铺遂。六種數(shù)字類型(四個整數(shù)型,兩個浮點型)茎刚,一種字符類型襟锐,還有一種布爾型。
byte:
-byte 數(shù)據(jù)類型是8位膛锭、有符號的粮坞,以二進制補碼表示的整數(shù);
- 最小值是 -128(-2^7)初狰;
- 最大值是 127(2^7-1)莫杈;
- 默認值是 0;
byte 類型用在大型數(shù)組中節(jié)約空間奢入,主要代替整數(shù)筝闹,因為 byte 變量占用的空間只有 int 類型的四分之一;
例子:
byte a = 100腥光,byte b = -50
关顷。
short:
- short 數(shù)據(jù)類型是 16 位、有符號的以二進制補碼表示的整數(shù)
- 最小值是 -32768(-2^15)武福;
- 最大值是 32767(2^15 - 1)议双;
Short 數(shù)據(jù)類型也可以像 byte 那樣節(jié)省空間。一個short變量是int型變量所占空間的二分之一捉片;
默認值是 0平痰;
例子:
short s = 1000汞舱,short r = -20000
。
int:
- int 數(shù)據(jù)類型是32位觉增、有符號的以二進制補碼表示的整數(shù)兵拢;
- 最小值是 -2,147,483,648(-2^31);
- 最大值是 2,147,483,647(2^31 - 1)逾礁;
- 一般地整型變量默認為 int 類型;
- 默認值是 0 访惜;
例子:
int a = 100000, int b = -200000
嘹履。
long:
- long 數(shù)據(jù)類型是 64 位、有符號的以二進制補碼表示的整數(shù)债热;
- 最小值是 -9,223,372,036,854,775,808(-2^63)砾嫉;
- 最大值是 9,223,372,036,854,775,807(2^63 -1);
- 這種類型主要使用在需要比較大整數(shù)的系統(tǒng)上窒篱;
- 默認值是 0L焕刮;
例子:
long a = 100000L,Long b = -200000L
墙杯。
"L"理論上不分大小寫配并,但是若寫成"l"容易與數(shù)字"1"混淆,不容易分辯高镐。所以最好大寫溉旋。
float:
- float 數(shù)據(jù)類型是單精度、32位嫉髓、符合IEEE 754標準的浮點數(shù)观腊;
- float 在儲存大型浮點數(shù)組的時候可節(jié)省內存空間;
- 默認值是 0.0f算行;
- 浮點數(shù)不能用來表示精確的值梧油,如貨幣;
例子:
float f1 = 234.5f
州邢。
double:
- double 數(shù)據(jù)類型是雙精度儡陨、64 位、符合IEEE 754標準的浮點數(shù)偷霉;
- 浮點數(shù)的默認類型為double類型迄委;
- double類型同樣不能表示精確的值,如貨幣类少;
- 默認值是 0.0d叙身;
例子:
double d1 = 123.4
。
boolean:
- boolean數(shù)據(jù)類型表示一位的信息硫狞;
- 只有兩個取值:true 和 false信轿;
- 這種類型只作為一種標志來記錄 true/false 情況晃痴;
- 默認值是 false;
例子:
boolean one = true
财忽。
char:
- char類型是一個單一的 16 位 Unicode 字符倘核;
- 最小值是 \u0000(即為0);
- 最大值是 \uffff(即為65,535)即彪;
- char 數(shù)據(jù)類型可以儲存任何字符紧唱;
例子:
char letter = 'A'
;。
注:
- 單精度:浮點數(shù)在機內占4個字節(jié)隶校,有效數(shù)字8位漏益,表示范圍:-3.40E+38 ~ +3.40E+38
- 雙精度:浮點數(shù)在機內占8個字節(jié),有效數(shù)字16位深胳,表示范圍:-1.79E+308 ~ +1.79E+308
3.3 引用數(shù)據(jù)類型
- 在Java中绰疤,引用類型的變量非常類似于C/C++的指針。引用類型指向一個對象舞终,指向對象的變量是引用變量轻庆。這些變量在聲明時被指定為一個特定的類型,變量一旦聲明后敛劝,類型就不能被改變了余爆。
- 對象、數(shù)組都是引用數(shù)據(jù)類型攘蔽。
- 所有引用類型的默認值都是null龙屉。
- 一個引用變量可以用來引用任何與之兼容的類型。
3.4 常量
常量在程序運行時是不能被修改的满俗。
在 Java 中使用 final 關鍵字來修飾常量转捕,聲明方式和變量類似:
final double PI = 3.1415927;
雖然常量名也可以用小寫,但為了便于識別唆垃,通常使用大寫字母表示常量五芝。
四. 變量類型
在Java語言中,所有的變量在使用前必須聲明辕万。聲明變量的基本格式如下:
type identifier [ = value][, identifier [= value] ...] ;
格式說明:type為Java數(shù)據(jù)類型枢步。identifier是變量名〗ツ颍可以使用逗號隔開來聲明多個同類型變量醉途。
實例如下:
int a, b, c; // 聲明三個int型整數(shù):a、 b砖茸、c
int d = 3, e = 4, f = 5; // 聲明三個整數(shù)并賦予初值
byte z = 22; // 聲明并初始化 z
String s = "run"; // 聲明并初始化字符串 s
double pi = 3.14159; // 聲明了雙精度浮點型變量 pi
char x = 'x'; // 聲明變量 x 的值是字符 'x'隘擎。
Java語言支持的變量類型有:
- 類變量:獨立于方法之外的變量,屬于類本身凉夯,用 static 修飾货葬。
- 實例變量:獨立于方法之外的變量采幌,不過沒有 static 修飾。
- 局部變量:類的方法中的變量震桶。
實例如下:
public class Variable{
static int allClicks=0; // 類變量
String str="hello world"; // 實例變量
public void method(){
int i =0; // 局部變量
}
}
4.1Java 局部變量
- 局部變量聲明在方法休傍、構造方法或者語句塊中;
- 局部變量在方法蹲姐、構造方法磨取、或者語句塊被執(zhí)行的時候創(chuàng)建,當它們執(zhí)行完成后柴墩,變量將會被銷毀寝衫;
- 訪問修飾符不能用于局部變量;
- 局部變量只在聲明它的方法拐邪、構造方法或者語句塊中可見;
- 局部變量是在棧上分配的隘截。
- 局部變量沒有默認值扎阶,所以局部變量被聲明后,必須經過初始化婶芭,才可以使用东臀。
4.2實例變量
- 實例變量聲明在一個類中,但在方法犀农、構造方法和語句塊之外惰赋;
- 當一個對象被實例化之后,每個實例變量的值就跟著確定呵哨;
- 實例變量在對象創(chuàng)建的時候創(chuàng)建赁濒,在對象被銷毀的時候銷毀;
- 實例變量的值應該至少被一個方法孟害、構造方法或者語句塊引用拒炎,使得外部能夠通過這些方式獲取實例變量信息;
- 實例變量可以聲明在使用前或者使用后挨务;
- 訪問修飾符可以修飾實例變量击你;
- 實例變量對于類中的方法、構造方法或者語句塊是可見的谎柄。一般情況下應該把實例變量設為私有丁侄。通過使用訪問修飾符可以使實例變量對子類可見;
- 實例變量具有默認值朝巫。數(shù)值型變量的默認值是0鸿摇,布爾型變量的默認值是false,引用類型變量的默認值是null捍歪。變量的值可以在聲明時指定户辱,也可以在構造方法中指定鸵钝;
- 實例變量可以直接通過變量名訪問。但在靜態(tài)方法以及其他類中庐镐,就應該使用完全限定名:ObejectReference.VariableName恩商。
4.3 類變量(靜態(tài)變量)
- 類變量也稱為靜態(tài)變量,在類中以static關鍵字聲明必逆,但必須在方法構造方法和語句塊之外怠堪。
- 無論一個類創(chuàng)建了多少個對象,類只擁有類變量的一份拷貝名眉。
- 靜態(tài)變量除了被聲明為常量外很少使用粟矿。常量是指聲明為public/private,final和static類型的變量损拢。常量初始化后不可改變陌粹。
- 靜態(tài)變量儲存在靜態(tài)存儲區(qū)。經常被聲明為常量福压,很少單獨使用static聲明變量掏秩。
- 靜態(tài)變量在第一次被訪問時創(chuàng)建,在程序結束時銷毀荆姆。
- 與實例變量具有相似的可見性蒙幻。但為了對類的使用者可見,大多數(shù)靜態(tài)變量聲明為public類型胆筒。
- 默認值和實例變量相似邮破。數(shù)值型變量默認值是0,布爾型默認值是false仆救,引用類型默認值是null抒和。變量的值可以在聲明的時候指定,也可以在構造方法中指定派桩。此外构诚,靜態(tài)變量還可以在靜態(tài)語句塊中初始化。
- 靜態(tài)變量可以通過:ClassName.VariableName的方式訪問铆惑。
- 類變量被聲明為public static final類型時范嘱,類變量名稱一般建議使用大寫字母。如果靜態(tài)變量不是public和final類型员魏,其命名方式與實例變量以及局部變量的命名方式一致丑蛤。
五.運算符
Java提供了一套豐富的運算符來操縱變量。我們可以把運算符分成以下幾組:
- 算術運算符
- 關系運算符
- 位運算符
- 邏輯運算符
- 賦值運算符
- 其他運算符
5.1 算數(shù)運算符
算術運算符用在數(shù)學表達式中撕阎,它們的作用和在數(shù)學中的作用一樣受裹。下圖列出了所有的算術運算符。
圖中的實例假設整數(shù)變量A的值為10,變量B的值為20:
實例
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println("a + b = " + (a + b) );
System.out.println("a - b = " + (a - b) );
System.out.println("a * b = " + (a * b) );
System.out.println("b / a = " + (b / a) );
System.out.println("b % a = " + (b % a) );
System.out.println("c % a = " + (c % a) );
System.out.println("a++ = " + (a++) );
System.out.println("a-- = " + (a--) );
// 查看 d++ 與 ++d 的不同
System.out.println("d++ = " + (d++) );
System.out.println("++d = " + (++d) );
}
}
運行結果如下:
a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5
a++ = 10
a-- = 11
d++ = 25
++d = 27
5.2關系運算符
下圖為Java支持的關系運算符
圖中的實例整數(shù)變量A的值為10棉饶,變量B的值為20:
實例
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a == b = " + (a == b) );
System.out.println("a != b = " + (a != b) );
System.out.println("a > b = " + (a > b) );
System.out.println("a < b = " + (a < b) );
System.out.println("b >= a = " + (b >= a) );
System.out.println("b <= a = " + (b <= a) );
}
}
運行結果如下:
a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false
5.3 位運算符
Java定義了位運算符厦章,應用于整數(shù)類型(int),長整型(long)照藻,短整型(short)袜啃,字符型(char),和字節(jié)型(byte)等類型幸缕。
位運算符作用在所有的位上群发,并且按位運算。假設a = 60发乔,b = 13;它們的二進制格式表示將如下:
A = 0011 1100
B = 0000 1101
-----------------
A&b = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011
下圖列出了位運算符的基本運算,假設整數(shù)變量A的值為60和變量B的值為13:
實例
public class Test {
public static void main(String[] args) {
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
System.out.println("a & b = " + c );
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 15 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
}
}
運行結果如下:
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2 = 15
a >>> 2 = 15
5.4 邏輯運算符
下圖列出了邏輯運算符的基本運算熟妓,假設布爾變量A為真,變量B為假
實例
public class Test {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
}
}
運行結果如下:
a && b = false
a || b = true
!(a && b) = true
5.5 賦值運算符
下面是Java語言支持的賦值運算符:
實例
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 0;
c = a + b;
System.out.println("c = a + b = " + c );
c += a ;
System.out.println("c += a = " + c );
c -= a ;
System.out.println("c -= a = " + c );
c *= a ;
System.out.println("c *= a = " + c );
a = 10;
c = 15;
c /= a ;
System.out.println("c /= a = " + c );
a = 10;
c = 15;
c %= a ;
System.out.println("c %= a = " + c );
c <<= 2 ;
System.out.println("c <<= 2 = " + c );
c >>= 2 ;
System.out.println("c >>= 2 = " + c );
c >>= 2 ;
System.out.println("c >>= 2 = " + c );
c &= a ;
System.out.println("c &= a = " + c );
c ^= a ;
System.out.println("c ^= a = " + c );
c |= a ;
System.out.println("c |= a = " + c );
}
}
運行結果如下:
c = a + b = 30
c += a = 40
c -= a = 30
c *= a = 300
c /= a = 1
c %= a = 5
c <<= 2 = 20
c >>= 2 = 5
c >>= 2 = 1
c &= a = 0
c ^= a = 10
c |= a = 10
5.6 條件運算符(?:)
條件運算符也被稱為三元運算符栏尚。該運算符有3個操作數(shù)起愈,并且需要判斷布爾表達式的值。該運算符的主要是決定哪個值應該賦值給變量译仗。
variable x = (expression) ? value if true : value if false
實例
public class Test {
public static void main(String[] args){
int a , b;
a = 10;
// 如果 a 等于 1 成立告材,則設置 b 為 20,否則為 30
b = (a == 1) ? 20 : 30;
System.out.println( "Value of b is : " + b );
// 如果 a 等于 10 成立古劲,則設置 b 為 20,否則為 30
b = (a == 10) ? 20 : 30;
System.out.println( "Value of b is : " + b );
}
}
運行結果如下:
Value of b is : 30
Value of b is : 20
5.7 instanceof 運算符
該運算符用于操作對象實例缰猴,檢查該對象是否是一個特定類型(類類型或接口類型)产艾。
instanceof運算符使用格式如下
( Object reference variable ) instanceof (class/interface type)
如果運算符左側變量所指的對象,是操作符右側類或接口(class/interface)的一個對象滑绒,那么結果為真闷堡。
實例
String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 類型,所以返回真
如果被比較的對象兼容于右側類型,該運算符仍然返回true疑故。
實例
class Vehicle {}
public class Car extends Vehicle {
public static void main(String[] args){
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println( result);
}
}
運行結果如下:
true
5.8 Java運算符優(yōu)先級
當多個運算符出現(xiàn)在一個表達式中杠览,誰先誰后呢?這就涉及到運算符的優(yōu)先級別的問題纵势。在一個多運算符的表達式中踱阿,運算符優(yōu)先級不同會導致最后得出的結果差別甚大。
下圖中具有最高優(yōu)先級的運算符在的表的最上面钦铁,最低優(yōu)先級的在表的底部软舌。
六. 流程控制
6.1 Java 循環(huán)結構 - for, while 及 do...while
順序結構的程序語句只能被執(zhí)行一次。如果您想要同樣的操作執(zhí)行多次,牛曹,就需要使用循環(huán)結構佛点。
Java中有三種主要的循環(huán)結構:
- while 循環(huán)
- do…while 循環(huán)
- for 循環(huán)
在Java5中引入了一種主要用于數(shù)組的增強型for循環(huán)。
while 循環(huán)
while是最基本的循環(huán),它的結構為:
while( 布爾表達式 ) {
//循環(huán)內容
}
只要布爾表達式為 true超营,循環(huán)就會一直執(zhí)行下去鸳玩。
實例
public class Test {
public static void main(String []args) {
int x = 10;
while( x < 20 ) {
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}
}
}
運行結果如下:
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
do…while 循環(huán)
對于 while 語句而言,如果不滿足條件演闭,則不能進入循環(huán)不跟。但有時候我們需要即使不滿足條件,也至少執(zhí)行一次船响。
do…while 循環(huán)和 while 循環(huán)相似躬拢,不同的是,do…while 循環(huán)至少會執(zhí)行一次见间。
do {
//代碼語句
}while(布爾表達式);
注意:布爾表達式在循環(huán)體的后面聊闯,所以語句塊在檢測布爾表達式之前已經執(zhí)行了。 如果布爾表達式的值為 true米诉,則語句塊一直執(zhí)行菱蔬,直到布爾表達式的值為 false。
實例
public class Test {
public static void main(String []args){
int x = 10;
do{
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}while( x < 20 );
}
}
運行結果如下:
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
for循環(huán)
雖然所有循環(huán)結構都可以用 while 或者 do...while表示史侣,但 Java 提供了另一種語句 —— for 循環(huán)拴泌,使一些循環(huán)結構變得更加簡單。
for循環(huán)執(zhí)行的次數(shù)是在執(zhí)行前就確定的惊橱。語法格式如下:
for(初始化; 布爾表達式; 更新) {
//代碼語句
}
關于 for 循環(huán)有以下幾點說明:
- 最先執(zhí)行初始化步驟蚪腐。可以聲明一種類型税朴,但可初始化一個或多個循環(huán)控制變量回季,也可以是空語句。
- 然后正林,檢測布爾表達式的值泡一。如果為 true,循環(huán)體被執(zhí)行觅廓。如果為false鼻忠,循環(huán)終止,開始執(zhí)行循環(huán)體后面的語句杈绸。
- 執(zhí)行一次循環(huán)后帖蔓,更新循環(huán)控制變量。
- 再次檢測布爾表達式瞳脓。循環(huán)執(zhí)行上面的過程讨阻。
實例
public class Test {
public static void main(String []args) {
for(int x = 10; x < 20; x = x+1) {
System.out.print("value of x : " + x );
System.out.print("\n");
}
}
}
運行結果如下:
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
Java 增強 for 循環(huán)
Java5 引入了一種主要用于數(shù)組的增強型 for 循環(huán)。
Java 增強 for 循環(huán)語法格式如下:
for(聲明語句 : 表達式)
{
//代碼句子
}
聲明語句:聲明新的局部變量篡殷,該變量的類型必須和數(shù)組元素的類型匹配钝吮。其作用域限定在循環(huán)語句塊,其值與此時數(shù)組元素的值相等。
表達式:表達式是要訪問的數(shù)組名奇瘦,或者是返回值為數(shù)組的方法棘催。
實例
public class Test {
public static void main(String args[]){
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ){
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
String [] names ={"James", "Larry", "Tom", "Lacy"};
for( String name : names ) {
System.out.print( name );
System.out.print(",");
}
}
}
運行結果如下:
10,20,30,40,50,
James,Larry,Tom,Lacy,
break 關鍵字
break 主要用在循環(huán)語句或者 switch 語句中,用來跳出整個語句塊耳标。
break 跳出最里層的循環(huán)醇坝,并且繼續(xù)執(zhí)行該循環(huán)下面的語句。
語法
break 的用法很簡單次坡,就是循環(huán)結構中的一條語句:
break;
實例
public class Test {
public static void main(String []args) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ) {
// x 等于 30 時跳出循環(huán)
if( x == 30 ) {
break;
}
System.out.print( x );
System.out.print("\n");
}
}
}
運行結果如下:
10
20
continue 關鍵字
continue 適用于任何循環(huán)控制結構中呼猪。作用是讓程序立刻跳轉到下一次循環(huán)的迭代。
在 for 循環(huán)中砸琅,continue 語句使程序立即跳轉到更新語句宋距。
在 while 或者 do…while 循環(huán)中,程序立即跳轉到布爾表達式的判斷語句症脂。
語法
continue 就是循環(huán)體中一條簡單的語句:
continue;
實例
public class Test {
public static void main(String args[]) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ) {
if( x == 30 ) {
continue;
}
System.out.print( x );
System.out.print("\n");
}
}
}
運行結果如下:
10
20
40
50
6.2 Java 條件語句 - if...else
一個 if 語句包含一個布爾表達式和一條或多條語句谚赎。
語法
if 語句的語法如下:
if(布爾表達式)
{
//如果布爾表達式為true將執(zhí)行的語句
}
如果布爾表達式的值為 true,則執(zhí)行 if 語句中的代碼塊诱篷,否則執(zhí)行 if 語句塊后面的代碼壶唤。
實例:
public class Test {
public static void main(String args[]){
int x = 10;
if( x < 20 ){
System.out.print("這是 if 語句");
}
}
}
運行結果如下:
'這是 if 語句'
if...else語句
if 語句后面可以跟 else 語句,當 if 語句的布爾表達式值為 false 時棕所,else 語句塊會被執(zhí)行闸盔。
語法
if…else 的用法如下:
if(布爾表達式){
//如果布爾表達式的值為true
}else{
//如果布爾表達式的值為false
}
實例
public class Test {
public static void main(String args[]){
int x = 30;
if( x < 20 ){
System.out.print("這是 if 語句");
}else{
System.out.print("這是 else 語句");
}
}
}
運行結果如下:
'這是 else 語句'
if...else if...else 語句
if 語句后面可以跟 else if…else 語句,這種語句可以檢測到多種可能的情況琳省。
使用 if蕾殴,else if,else 語句的時候岛啸,需要注意下面幾點:
- if 語句至多有 1 個 else 語句,else 語句在所有的 else if 語句之后茴肥。
- if 語句可以有若干個 else if 語句坚踩,它們必須在 else 語句之前。
- 一旦其中一個 else if 語句檢測為 true瓤狐,其他的 else if 以及 else 語句都將跳過執(zhí)行。
語法
if...else 語法格式如下:
if(布爾表達式 1){
//如果布爾表達式 1的值為true執(zhí)行代碼
}else if(布爾表達式 2){
//如果布爾表達式 2的值為true執(zhí)行代碼
}else if(布爾表達式 3){
//如果布爾表達式 3的值為true執(zhí)行代碼
}else {
//如果以上布爾表達式都不為true執(zhí)行代碼
}
實例
public class Test {
public static void main(String args[]){
int x = 30;
if( x == 10 ){
System.out.print("Value of X is 10");
}else if( x == 20 ){
System.out.print("Value of X is 20");
}else if( x == 30 ){
System.out.print("Value of X is 30");
}else{
System.out.print("這是 else 語句");
}
}
}
運行結果如下:
Value of X is 30
6.3 Java switch case 語句
switch case 語句判斷一個變量與一系列值中某個值是否相等,每個值稱為一個分支翎猛。
語法
switch case 語句語法格式如下:
switch(expression){
case value :
//語句
break; //可選
case value :
//語句
break; //可選
//你可以有任意數(shù)量的case語句
default : //可選
//語句
}
switch case 語句有如下規(guī)則:
switch 語句中的變量類型可以是: byte勿锅、short、int 或者 char皆警。從 Java SE 7 開始拦宣,switch 支持字符串 String 類型了,同時 case 標簽必須為字符串常量或字面量。
switch 語句可以擁有多個 case 語句鸵隧。每個 case 后面跟一個要比較的值和冒號绸罗。
case 語句中的值的數(shù)據(jù)類型必須與變量的數(shù)據(jù)類型相同,而且只能是常量或者字面常量豆瘫。
當變量的值與 case 語句的值相等時珊蟀,那么 case 語句之后的語句開始執(zhí)行,直到 break 語句出現(xiàn)才會跳出 switch 語句外驱。
當遇到 break 語句時育灸,switch 語句終止。程序跳轉到 switch 語句后面的語句執(zhí)行昵宇。case 語句不必須要包含 break 語句磅崭。如果沒有 break 語句出現(xiàn),程序會繼續(xù)執(zhí)行下一條 case 語句趟薄,直到出現(xiàn) break 語句绽诚。
switch 語句可以包含一個 default 分支,該分支一般是 switch 語句的最后一個分支(可以在任何位置杭煎,但建議在最后一個)恩够。default 在沒有 case 語句的值和變量值相等的時候執(zhí)行。default 分支不需要 break 語句羡铲。
switch case 執(zhí)行時蜂桶,一定會先進行匹配,匹配成功返回當前 case 的值也切,再根據(jù)是否有 break扑媚,判斷是否繼續(xù)輸出,或是跳出判斷雷恃。
實例
public class Test {
public static void main(String args[]){
//char grade = args[0].charAt(0);
char grade = 'C';
switch(grade)
{
case 'A' :
System.out.println("優(yōu)秀");
break;
case 'B' :
case 'C' :
System.out.println("良好");
break;
case 'D' :
System.out.println("及格");
break;
case 'F' :
System.out.println("你需要再努力努力");
break;
default :
System.out.println("未知等級");
}
System.out.println("你的等級是 " + grade);
}
}
以上代碼編譯運行結果如下:
`
良好
你的等級是 C
`
- 如果 case 語句塊中沒有 break 語句時疆股,JVM 并不會順序輸出每一個 case 對應的返回值,而是繼續(xù)匹配倒槐,匹配不成功則返回默認 case旬痹。
- 如果 case 語句塊中沒有 break 語句時,匹配成功后讨越,從當前 case 開始两残,后續(xù)所有 case 的值都會輸出。
- 如果當前匹配成功的 case 語句塊沒有 break 語句把跨,則從當前 case 開始人弓,后續(xù)所有 case 的值都會輸出,如果后續(xù)的 case 語句塊有 break 語句則會跳出判斷着逐。