# Java基礎語法
一個Java程序可以認為是一系列對象的集合,而這些對象通過調用彼此的方法來協同工作。下面簡要介紹下類、對象、方法和實例變量的概念。
* **對象**:對象是類的一個實例,有狀態和行為。例如,一條狗是一個對象,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。
* **類**:類是一個模板,它描述一類對象的行為和狀態。
* **方法**:方法就是行為,一個類可以有很多方法。邏輯運算、數據修改以及所有動作都是在方法中完成的。
* **實例變量**:每個對象都有獨特的實例變量,對象的狀態由這些實例變量的值決定。
## 第一個Java程序
下面看一個簡單的Java程序,它將打印字符串 _Hello World_
```
public class MyFirstJavaProgram {
/* 第一個Java程序.
* 它將打印字符串 Hello World
*/
public static void main(String []args) {
System.out.println("Hello World"); // 打印 Hello World
}
}
```
下面將逐步介紹如何保存、編譯以及運行這個程序:
* 打開Notepad,把上面的代碼添加進去;
* 把文件名保存為:MyFirstJavaProgram.java;
* 打開cmd命令窗口,進入目標文件所在的位置,假設是C:\
* 在命令行窗口鍵入 javac MyFirstJavaProgram.java? 按下enter鍵編譯代碼。如果代碼沒有錯誤,cmd命令提示符會進入下一行。(假設環境變量都設置好了)。
* 再鍵入java MyFirstJavaProgram 按下Enter鍵就可以運行程序了
你將會在窗口看到 Hello World
```
C : > javac MyFirstJavaProgram.java
C : > java MyFirstJavaProgram
Hello World
```
## 基本語法
編寫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保留字。這些保留字不能用于常量、變量、和任何標識符的名稱。
| 關鍵字 | 描述 |
| --- | --- |
| abstract | 抽象方法,抽象類的修飾符 |
| assert | 斷言條件是否滿足 |
| boolean | 布爾數據類型 |
| break | 跳出循環或者label代碼段 |
| byte | 8-bit 有符號數據類型 |
| case | switch語句的一個條件 |
| catch | 和try搭配撲捉異常信息 |
| char | 16-bit Unicode字符數據類型 |
| class | 定義類 |
| const | 未使用 |
| continue | 不執行循環體剩余部分 |
| default | switch語句中的默認分支 |
| do | 循環語句,循環體至少會執行一次 |
| double | 64-bit雙精度浮點數 |
| else | if條件不成立時執行的分支 |
| enum | 枚舉類型 |
| extends | 表示一個類是另一個類的子類 |
| final | 表示一個值在初始化之后就不能再改變了 表示方法不能被重寫,或者一個類不能有子類 |
| finally | 為了完成執行的代碼而設計的,主要是為了程序的健壯性和完整性,無論有沒有異常發生都執行代碼。 |
| float | 32-bit單精度浮點數 |
| for | for循環語句 |
| goto | 未使用 |
| if | 條件語句 |
| implements | 表示一個類實現了接口 |
| import | 導入類 |
| instanceof | 測試一個對象是否是某個類的實例 |
| int | 32位整型數 |
| interface | 接口,一種抽象的類型,僅有方法和常量的定義 |
| long | 64位整型數 |
| native | 表示方法用非java代碼實現 |
| new | 分配新的類實例 |
| package | 一系列相關類組成一個包 |
| private | 表示私有字段,或者方法等,只能從類內部訪問 |
| protected | 表示字段只能通過類或者其子類訪問 子類或者在同一個包內的其他類 |
| public | 表示共有屬性或者方法 |
| return | 方法返回值 |
| short | 16位數字 |
| static | 表示在類級別定義,所有實例共享的 |
| strictfp | 浮點數比較使用嚴格的規則 |
| super | 表示基類 |
| switch | 選擇語句 |
| synchronized | 表示同一時間只能由一個線程訪問的代碼塊 |
| this | 表示調用當前實例 或者調用另一個構造函數 |
| throw | 拋出異常 |
| throws | 定義方法可能拋出的異常 |
| transient | 修飾不要序列化的字段 |
| try | 表示代碼塊要做異常處理或者和finally配合表示是否拋出異常都執行finally中的代碼 |
| void | 標記方法不返回任何值 |
| volatile | 標記字段可能會被多個線程同時訪問,而不做同步 |
| while | while循環 |
## Java注釋
類似于C/C++,Java也支持單行以及多行注釋。注釋中的字符將被Java編譯器忽略。
```
public class MyFirstJavaProgram{
/* 這是第一個Java程序
*它將打印Hello World
* 這是一個多行注釋的示例
*/
public static void main(String []args){
// 這是單行注釋的示例
/* 這個也是單行注釋的示例 */
System.out.println("Hello World");
}
}
```
## Java 空行
空白行,或者有注釋的的行,Java編譯器都會忽略掉。
## 繼承
在Java中,一個類可以由其他類派生。如果你要創建一個類,而且已經存在一個類具有你所需要的屬性或方法,那么你可以將新創建的類繼承該類。
利用繼承的方法,可以重用已存在類的方法和屬性,而不用重寫這些代碼。被繼承的類稱為超類(super class),派生類稱為子類(subclass)。
## 接口
在Java中,接口可理解為對象間相互通信的協議。接口在繼承中扮演著很重要的角色。
接口只定義派生要用到的方法,但是方法的具體實現完全取決于派生類。
下一節介紹Java編程中的類和對象。之后你將會對Java中的類和對象有更清楚的認識。
- Java 基礎
- Java 簡介
- Java開發環境配置
- Java基礎語法
- Java對象和類
- Java基本數據類型
- Java變量類型
- Java修飾符
- Java運算符
- Java循環結構 - for, while 及 do...while
- Java分支結構 - if...else/switch
- Java Number類
- Java Character類
- Java String類
- Java StringBuffer和StringBuilder類
- Java 數組
- Java 日期時間
- Java正則表達式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 異常處理
- Java 面向對象
- Java 繼承
- Java 重寫(Override)與重載(Overload)
- Java 多態
- Java 抽象類
- Java 接口
- Java 包(package)
- Java 高級教程
- Java 數據結構
- Java Enumeration接口
- Java Bitset類
- Java Vector 類
- Java Stack 類
- Java Dictionary 類
- Java Hashtable 接口
- Java Properties 接口
- Java 集合框架
- Java 泛型
- Java序列化
- Java 網絡編程
- Java 發送郵件
- Java 多線程編程
- Java Applet基礎
- Java 文檔注釋
- Servlet 教程
- Servlet 簡介
- Servlet 環境設置
- Servlet 生命周期
- Servlet 實例
- Servlet 表單數據
- Servlet 客戶端 HTTP 請求
- Servlet 服務器 HTTP 響應
- Servlet HTTP 狀態碼
- Servlet 編寫過濾器
- Servlet 異常處理
- Servlet Cookies 處理
- Servlet Session 跟蹤
- Servlet 數據庫訪問
- Servlet 文件上傳
- Servlet 處理日期
- Servlet 網頁重定向
- Servlet 點擊計數器
- Servlet 自動刷新頁面
- Servlet 發送電子郵件
- Servlet 包
- Servlet 調試
- Servlet 國際化
- JSP 基礎
- JSP 簡介
- JSP 開發環境搭建
- JSP 結構
- JSP 生命周期
- JSP 語法
- JSP 指令
- JSP 動作元素
- JSP 動作元素
- JSP 隱含對象
- JSP 客戶端請求
- JSP 服務器響應
- JSP HTTP 狀態碼
- JSP 表單處理
- JSP 過濾器
- JSP Cookies 處理
- JSP Session
- JSP 文件上傳
- JSP 日期處理
- JSP 頁面重定向
- JSP 點擊量統計
- JSP 自動刷新
- JSP 發送郵件
- JSP 高級教程
- JSP 標準標簽庫(JSTL)
- JSP 連接數據庫
- JSP XML 數據處理
- JSP JavaBean
- JSP 自定義標簽
- JSP 表達式語言
- JSP 異常處理
- JSP 調試
- JSP 國際化
- 免責聲明