Java 基礎語法


一個Java程式可以認為是一系列物件的集合,而這些物件透過呼叫彼此的方法來協同工作。以下簡單介紹下類別、物件、方法和實例變數的概念。

  • 物件:物件是類別的一個實例,有狀態和行為。例如,一隻狗是一個對象,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。

  • 類別:類別是一個模板,它描述一類物件的行為和狀態。

  • 方法:方法就是行為,一個類別可以有很多方法。邏輯運算、資料修改以及所有動作都是在方法中完成的。

  • 實例變數:每個物件都有獨特的實例變量,物件的狀態由這些實例變數的值決定。


第一個Java程式

下面看一個簡單的Java程序,它將列印字串 Hello World


#實例

public class HelloWorld {
    /* 第一个Java程序
     * 它将打印字符串 Hello World
     */
    public static void main(String []args) {
        System.out.println("Hello World"); // 打印 Hello World
    }
}

#執行實例»

點擊"運行實例" 按鈕查看線上實例


以下將逐步介紹如何儲存、編譯以及執行這個程式:

  •                 打開Notepad,把上面的程式碼加進去;

  •                 儲存檔案名稱為:HelloWorld.java;

  •                 開啟cmd指令窗口,進入目標檔案所在的位置,假設是C:\

  •                 在命令列視窗鍵入 javac HelloWorld.java  按下enter鍵編譯程式碼。如果程式碼沒有錯誤,cmd命令提示字元會進入下一行。 (假設環境變數都設定好了)。

  •                 再鍵入java HelloWorld 按下Enter鍵就可以執行程式了

你將會在視窗看到Hello World

C : > javac HelloWorld.java
C : > java HelloWorld 
Hello World

Gif 圖表示範:

java-HelloWorld.gif

#基本語法

在寫Java程式時,應注意以下幾點:

  • #大小寫敏感:Java是大小寫敏感的,這意味著標識符Hello與hello是不同的。

  • 類別名稱:對於所有的類別來說,類別名稱的首字母應該要大寫。如果類別名稱由若干單字組成,那麼每個單字的首字母應該大寫,例如 MyFirstJavaClass 。

  • 方法名稱:所有的方法名稱都應該以小寫字母開頭。如果方法名含有若干單詞,則後面的每個單字首字母大寫。

  • 來源檔名:原始檔名必須和類別名稱相同。當儲存檔案的時候,你應該使用類別名稱作為檔案名稱儲存(切記Java是大小寫敏感的),檔案名稱的後綴為.java。 (如果檔案名稱和類別名稱不相同則會導致編譯錯誤)。

  • 主方法入口:所有的Java 程式由public static void main(String []args)方法開始執行。


Java標識符

Java所有的組成部分都需要一個名字。類別名稱、變數名以及方法名都被稱為標識符。

關於Java標識符,有以下幾點要注意:

  •                 所有的識別碼都應該以字母(A-Z或a-z),美元符($)、或底線(_)開始

  •                 首字之後可以是任何字元的組合

  •                 關鍵字不能用作識別字

  •                 標識符是大小寫敏感的

  •                 法定識別碼範例:age、$salary、_value、__1_value

  • #                非法識別碼舉例:123abc、-salary


        Java修飾符

        像其他語言一樣,Java可以使用修飾符來修飾類別中方法和屬性。主要有兩類修飾符:

  •                 可存取修飾符 : default, public , protected, private

  • #                不可存取修飾符 : final, abstract, strictfp

#        在後面的章節中我們會深入討論Java修飾符。


        Java變數

Java中主要有下列幾種類型的變數
  •                 局部變項

  •                 類別變數(靜態變數)

  •                 成員變數(非靜態變數)


Java陣列

#陣列是儲存在堆疊上的對象,可以保存多個同類型變數。在後面的章節中,我們將會學到如何宣告、構造、初始化一個陣列。


Java枚舉

Java 5.0引入了枚舉,枚舉限制變數只能是預先設定好的值。使用枚舉可以減少程式碼中的bug。

例如,我們為果汁店設計一個程序,它將限制果汁為小杯、中盃、大杯。這意味著它不允許顧客點除了這三種尺寸外的果汁。


實例

class FreshJuice {
   enum FreshJuiceSize{ SMALL, MEDUIM, LARGE }
   FreshJuiceSize size;
}

public class FreshJuiceTest {
   public static void main(String []args){
      FreshJuice juice = new FreshJuice();
      juice.size = FreshJuice. FreshJuiceSize.MEDUIM ;
   }
}

注意:列舉可以單獨宣告或宣告在類別裡面。方法、變數、建構子也可以在枚舉中定義。


Java關鍵字

下面列出了Java保留字。這些保留字不能用於常數、變數、和任何識別碼的名稱。

##instanceof測試一個物件是否是某個類別的實例int#32位元整數數interface接口,一種抽象的類型,僅有方法和常數的定義#long64位元整數數native表示方法用非java程式碼實作#new指派新的類別實例package一系列相關類別組成一個套件#private表示私有字段,或方法等,只能從類別內部存取protected表示欄位只能透過類別或其子類別存取public表示共有屬性或方法#return方法傳回值short16位元數字static表示在類別層級定義,所有實例共享的strictfp浮點數比較使用嚴格的規則#super表示基底類別switch選擇語句synchronized表示同一時間只能由一個執行緒存取的程式碼區塊this表示呼叫目前實例##try表示程式碼區塊要做異常處理或和finally配合表示是否拋出異常都執行finally中的程式碼#void標記方法不回傳任何值volatile標記欄位可能會被多個執行緒同時訪問,而不做同步whilewhile循環
關鍵字描述
#abstract#抽象方法,抽象類別的修飾符
assert斷言條件是否滿足
#boolean布林資料類型
break跳出迴圈或label程式碼片段
byte8-bit 有符號資料型別
caseswitch語句的一個條件
#catch和try搭配撲捉異常訊息
char16-bit Unicode字元資料類型
#class定義類別
const未使用
continue不執行循環體剩餘部分
default switch語句中的預設分支
do#迴圈語句,循環體至少會執行一次
double64-bit雙精確度浮點數
#elseif條件不成立時執行的分支
enum枚舉類型
extends表示一個類別是另一個類別的子類別
final表示一個值在初始化之後就不能再改變了
表示方法不能被重寫,或者一個類別不能有子類別
finally為了完成執行的程式碼而設計的,主要是為了程式的健全性和完整性,無論有沒有例外發生都執行程式碼。
float32-bit單精確度浮點數
forfor迴圈語句
goto未使用
if條件語句
implements表示一個類別實作了介面
import匯入類別
子類別或是同一個套件內的其他類
#或呼叫另一個建構子
throw拋出異常
throws#定義方法可能拋出的例外
transient修飾不要序列化的欄位

Java註解

類似C/C++,Java也支援單行以及多行註解。註解中的字元將被Java編譯器忽略。

public class HelloWorld {
   /* 这是第一个Java程序
    *它将打印Hello World
    * 这是一个多行注释的示例
    */
    public static void main(String []args){
       // 这是单行注释的示例
       /* 这个也是单行注释的示例 */
       System.out.println("Hello World"); 
    }
}


Java 空白行

空白行,或是有註解的的行,Java編譯器都會忽略掉。


        繼承

在Java中,一個類別可以由其他類別衍生出來。如果你要建立一個類,而且已經存在一個類別具有你所需要的屬性或方法,那麼你可以將新建立的類別繼承該類別。

利用繼承的方法,可以重複使用已存在類別的方法和屬性,而不用重寫這些程式碼。被繼承的類別稱為超類別(super class),衍生類別稱為子類別(subclass)。


        介面

在Java中,介面可理解為物件間相互通訊的協定。介面在繼承中扮演著很重要的角色。

介面只定義衍生要用到的方法,但是方法的具體實作完全取決於衍生類別。

下一節介紹Java程式設計中的類別和物件。之後你將會對Java中的類別和物件有更清楚的認識。