Java基礎(01)--簡介及基礎語法
Java基礎(01)--簡介及基礎語法
Java特性
-
Java語言是簡單的:
Java語言的語法與C語言和C++語言很接近,使得大多數程式設計師很容易學習和使用。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符過載、多繼承、自動的強制型別轉換。特別地,Java語言不使用指標,而是引用。並提供了自動的廢料收集,使得程式設計師不必為記憶體管理而擔憂。
-
Java語言是面向物件的:
Java語言提供類、介面和繼承等面向物件的特性,為了簡單起見,只支援類之間的單繼承,但支援介面之間的多繼承,並支援類與介面之間的實現機制(關鍵字為implements)。Java語言全面支援動態繫結,而C++語言只對虛擬函式使用動態繫結。總之,Java語言是一個純的面向物件程式設計語言。
-
Java語言是分散式的:
Java語言支援Internet應用的開發,在基本的Java應用程式設計介面中有一個網路應用程式設計介面
(java net)
,它提供了用於網路應用程式設計的類庫,包括URL、URLConnection、Socket、ServerSocket
等。Java的RMI
(遠端方法啟用)機制也是開發分散式應用的重要手段。 -
Java語言是健壯的:
Java的強型別機制、異常處理、垃圾的自動收集等是Java程式健壯性的重要保證。對指標的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
-
Java語言是安全的:
Java通常被用在網路環境中,為此,Java提供了一個安全機制以防惡意程式碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網路下載的類具有一個安全防範機制
(類ClassLoader)
(類SecurityManager)
讓Java應用設定安全哨兵. -
Java語言是體系結構中立的:
Java程式(字尾為
.java
的檔案)在Java平臺上被編譯為體系結構中立的位元組碼格式(字尾為.class
的檔案),然後可以在實現這個Java平臺的任何系統中執行。這種途徑適合於異構的網路環境和軟體的分發。 -
Java語言是可移植的:
這種可移植性來源於體系結構中立性,另外,Java還嚴格規定了各個基本資料型別的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的執行環境是用ANSI C實現的。
-
Java語言是解釋型的:
如前所述,Java程式在Java平臺上被編譯為位元組碼格式,然後可以在實現這個Java平臺的任何系統中執行。在執行時,Java平臺中的Java直譯器對這些位元組碼進行解釋執行,執行過程中需要的類在聯接階段被載入到執行環境中。
-
Java是高效能的:
與那些解釋型的高階指令碼語言相比,Java的確是高效能的。事實上,Java的執行速度隨著
JIT(Just-In-Time)
編譯器技術的發展越來越接近於C++。 -
Java語言是多執行緒的:
在Java語言中,執行緒是一種特殊的物件,它必須由Thread類或其子(孫)類來建立。通常有兩種方法來建立執行緒:其一,使用型構為Thread(Runnable)的構造子類將一個實現了Runnable介面的物件包裝成一個執行緒,其二,從Thread類派生出子類並重寫run方法,使用該子類建立的物件即為執行緒。值得注意的是Thread類已經實現了Runnable介面,因此,任何一個執行緒均有它的run方法,而run方法中包含了執行緒所要執行的程式碼。執行緒的活動由一組方法來控制。Java語言支援多個執行緒的同時執行,並提供多執行緒之間的同步機制(關鍵字為synchronized)。
-
Java語言是動態的:
Java語言的設計目標之一是適應於動態變化的環境。Java程式需要的類能夠動態地被載入到執行環境,也可以通過網路來載入所需要的類。這也有利於軟體的升級。另外,Java中的類有一個執行時刻的表示,能進行執行時刻的型別檢查。
Java基礎語法
一個 Java 程式可以認為是一系列物件的集合,而這些物件通過呼叫彼此的方法來協同工作
- 物件:物件是類的一個例項,有狀態和行為。
- 類:類是一個模板,它描述一類物件的行為和狀態。
- 方法:方法就是行為,一個類可以有很多方法。邏輯運算、資料修改以及所有動作都是在方法中完成的。
- 例項變數:每個物件都有獨特的例項變數,物件的狀態由這些例項變數的值決定。
編寫 Java 程式時,應注意以下幾點:
- 大小寫敏感:Java 是大小寫敏感的,這就意味著識別符號 base.Hello 與 hello 是不同的。
- 類名:對於所有的類來說,類名的首字母應該大寫。如果類名由若干單片語成,那麼每個單詞的首字母應該大寫,例如
MyFirstJavaClass
- 方法名:所有的方法名都應該以小寫字母開頭。如果方法名含有若干單詞,則後面的每個單詞首字母大寫。
- 原始檔名:原始檔名必須和類名相同。當儲存檔案的時候,你應該使用類名作為檔名儲存(切記 Java 是大小寫敏感的),檔名的字尾為
.java
。(如果檔名和類名不相同則會導致編譯錯誤)。 - 主方法入口:所有的 Java 程式由
public static void main(String[] args)
方法開始執行。
第一個Java程式
public class base.Hello {
public static void main(String[] args) {
/*
* 第一個Java程式,
* 列印 base.Hello World
* */
System.out.println("base.Hello World");
}
}
- 在命令列視窗輸入
javac HelloWorld.java
按下回車鍵編譯程式碼生成HelloWorld.class
。如果程式碼沒有錯誤,cmd 命令提示符會進入下一行(假設環境變數都設定好了)。 - 再鍵輸入
java HelloWorld
按下回車鍵就可以執行程式了
Java識別符號
Java 所有的組成部分都需要名字。類名、變數名以及方法名都被稱為識別符號。
關於 Java 識別符號,有以下幾點需要注意:
- 所有的識別符號都應該以字母(A-Z 或者 a-z),美元符($)、或者下劃線(_)開始
- 首字元之後可以是字母(A-Z 或者 a-z),美元符($)、下劃線(_)或數字的任何字元組合
- 關鍵字不能用作識別符號
- 識別符號是大小寫敏感的
public class TestIdentify {
// 合法識別符號舉例:
int age = 1;
int $salary = 100;
int _value = 2;
int __1_value=-1;
// 非法識別符號舉例:123abc、-salary
}
Java修飾符
像其他語言一樣,Java可以使用修飾符來修飾類中方法和屬性。主要有兩類修飾符:
- 訪問控制修飾符 :
default
,public
,protected
,private
- 非訪問控制修飾符 :
final
,abstract
,static
,synchronized
Java變數
Java 中主要有如下幾種型別的變數
- 區域性變數
- 類變數(靜態變數)
- 成員變數(非靜態變數)
Java列舉
列舉限制變數只能是預先設定好的值。使用列舉可以減少程式碼中的 bug。
class base.FreshJuice{
enum FreshJuiceSize {SMALL, MEDIUM, LARGE}
FreshJuiceSize size;
}
public class base.FreshJuiceTest {
public static void main(String[] args) {
base.FreshJuice juice = new base.FreshJuice();
System.out.println(juice.size);
juice.size = base.FreshJuice.FreshJuiceSize.MEDIUM;
System.out.println(juice.size);
}
}
Java關鍵字
下面列出了 Java 關鍵字。這些保留字不能用於常量、變數、和任何識別符號的名稱。
類別 | 關鍵字 | 說明 |
---|---|---|
訪問控制 | private | 私有的 |
protected | 受保護的 | |
public | 公共的 | |
default | 預設 | |
類、方法和變數修飾符 | abstract | 宣告抽象 |
class | 類 | |
extends | 擴充,繼承 | |
final | 最終值,不可改變的 | |
implements | 實現(介面) | |
interface | 介面 | |
native | 本地,原生方法(非 Java 實現) | |
new | 新,建立 | |
static | 靜態 | |
strictfp | 嚴格,精準 | |
synchronized | 執行緒,同步 | |
transient | 短暫 | |
volatile | 易失 | |
程式控制語句 | break | 跳出迴圈 |
case | 定義一個值以供 switch 選擇 | |
continue | 繼續 | |
default | 預設 | |
do | 執行 | |
else | 否則 | |
for | 迴圈 | |
if | 如果 | |
instanceof | 例項 | |
return | 返回 | |
switch | 根據值選擇執行 | |
while | 迴圈 | |
錯誤處理 | assert | 斷言表示式是否為真 |
catch | 捕捉異常 | |
finally | 有沒有異常都執行 | |
throw | 丟擲一個異常物件 | |
throws | 宣告一個異常可能被丟擲 | |
try | 捕獲異常 | |
包相關 | import | 引入 |
package | 包 | |
基本型別 | boolean | 布林型 |
byte | 位元組型 | |
char | 字元型 | |
double | 雙精度浮點 | |
float | 單精度浮點 | |
int | 整型 | |
long | 長整型 | |
short | 短整型 | |
變數引用 | super | 父類,超類 |
this | 本類 | |
void | 無返回值 | |
保留關鍵字 | goto | 是關鍵字,但不能使用 |
const | 是關鍵字,但不能使用 | |
null | 空 |
註釋
- 單行註釋
- 多行註釋
- 文件註釋
public class base.Hello {
public static void main(String[] args){
// 單行註釋
System.out.print("base.Hello World");
/*
多行註釋
多行註釋
*/
}
}
Java空行
空白行或者有註釋的行,Java 編譯器都會忽略掉。
繼承
在 Java 中,一個類可以由其他類派生。如果你要建立一個類,而且已經存在一個類具有你所需要的屬性或方法,那麼你可以將新建立的類繼承該類。
利用繼承的方法,可以重用已存在類的方法和屬性,而不用重寫這些程式碼。被繼承的類稱為超類(super class
),派生類稱為子類(subclass
)。
介面
在 Java 中,介面可理解為物件間相互通訊的協議。介面在繼承中扮演著很重要的角色。
介面只定義派生要用到的方法,但是方法的具體實現完全取決於派生類。
Java程式執行機制
- 編譯型
- 解釋型
public class base.Hello {
public static void main(String[] args){
System.out.print("base.Hello World");
}
}
Java源程式與編譯型執行區別: