Java基礎語法(1)

參考菜鳥教程進行編寫

一.基本語法

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';。

注:

  1. 單精度:浮點數(shù)在機內占4個字節(jié)隶校,有效數(shù)字8位漏益,表示范圍:-3.40E+38 ~ +3.40E+38
  2. 雙精度:浮點數(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:


運算符.png

實例

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:


關系運算符.png

實例

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:


位運算符.png

實例

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為假


邏輯運算符.png

實例

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語言支持的賦值運算符:


賦值運算符.png

實例

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)先級的在表的底部软舌。


優(yōu)先級.png

六. 流程控制

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 語句則會跳出判斷着逐。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末崔赌,一起剝皮案震驚了整個濱河市意蛀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峰鄙,老刑警劉巖浸间,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吟榴,居然都是意外死亡魁蒜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門吩翻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兜看,“玉大人,你說我怎么就攤上這事狭瞎∠敢疲” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵熊锭,是天一觀的道長弧轧。 經常有香客問我,道長碗殷,這世上最難降的妖魔是什么精绎? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮锌妻,結果婚禮上代乃,老公的妹妹穿的比我還像新娘。我一直安慰自己仿粹,他們只是感情好搁吓,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吭历,像睡著了一般堕仔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晌区,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天摩骨,我揣著相機與錄音,去河邊找鬼契讲。 笑死,一個胖子當著我的面吹牛滑频,可吹牛的內容都是我干的捡偏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼峡迷,長吁一口氣:“原來是場噩夢啊……” “哼银伟!你這毒婦竟也來了你虹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤彤避,失蹤者是張志新(化名)和其女友劉穎傅物,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琉预,經...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡董饰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了圆米。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卒暂。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖娄帖,靈堂內的尸體忽然破棺而出也祠,到底是詐尸還是另有隱情,我是刑警寧澤近速,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布诈嘿,位于F島的核電站,受9級特大地震影響削葱,放射性物質發(fā)生泄漏奖亚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一佩耳、第九天 我趴在偏房一處隱蔽的房頂上張望遂蛀。 院中可真熱鬧,春花似錦干厚、人聲如沸李滴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽所坯。三九已至,卻和暖如春挂捅,著一層夾襖步出監(jiān)牢的瞬間芹助,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工闲先, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留状土,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓伺糠,卻偏偏與公主長得像蒙谓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子训桶,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內容