鍍金池/ 教程/ Java/ Java 快速參考指南
Java 接口
Java 方法
Java 數(shù)字
Java 條件判斷
Java 異常處理
Java 字符
Java 重寫
Java 網絡編程
Java 數(shù)據(jù)結構
Java 的對象和類
Java 多線程
Java 封裝
Java 數(shù)組
Java Applet 基礎
Java 庫類
Java 抽象
Java 繼承
Java 正則表達式
Java 描述符的類型
Java 發(fā)送郵件
Java 序列化
Java 泛型
Java 多態(tài)
Java 變量類型
Java 基本數(shù)據(jù)類型
Java 包
Java 快速參考指南
Java 基本運算符
Java 概述
Java 字符串
Java 循環(huán)控制
Java 環(huán)境設置
Java 文件注釋
Java 文件和 I/O
Java 集合
Java 基本語法
Java 日期和時間

Java 快速參考指南

什么是 Java?

  • 面向對象

  • 平臺獨立

  • 簡單

  • 安全

  • 中立

  • 可移植的

  • 強健

  • 多線程

  • 可翻譯的

  • 高效

  • 分布式的

  • 動態(tài)的

Java 基本語法

  • 對象 - 對象有狀態(tài)和行為。例子:一條狗有狀態(tài):顏色,名字,品種以及行為-搖尾巴,吠,吃。一個對象是一個類的實例。
  • - 一個類能被定義成對象的模版/藍圖,用于描述對象類型的行為/狀態(tài)。
  • 方法 - 一個方法基本是一個行為。一個類能包含許多方法。邏輯是寫在方法中的,數(shù)據(jù)被操作并且所有的行為被執(zhí)行。
  • 即時變量 - 每一個對象有它獨有的即時變量的設置。一個對象的狀態(tài)由賦予這些即時變量的值所創(chuàng)建。

第一個 Java 程序

讓我們看看一個簡單的能打印出單詞 Hello World 的代碼。

public class MyFirstJavaProgram{

   /* This is my first java program.  
    * This will print 'Hello World' as the output
    */

    public static void main(String []args){
       System.out.println("Hello World"); // prints Hello World
    }
} 

關于 Java 程序,記住下面幾點很重要。

  • 大小寫敏感性 - Java 是區(qū)分大小寫,這意味著標識符 Hello 和 hello 在 Java 中將有不同的含義。
  • 類名 - 對于所有的類名來說第一個字母應該是大寫的。
    如果幾個單詞被用來組成類的名字則每一個內部的單詞的第一個應該是大寫的。
    例子: 類 MyFirstJavaClass
  • 方法名字 - 所有的方法名應該以一個小寫字母開始。
    如果幾個單詞用來組成方法的名字,則每個內部單詞的第一個字母應該是大寫的。
    例子:public void myMethodName()
  • 程序文件名 - 程序文件的名字應該準確匹配類名。
    當保存文件時你應該使用類名(記住 Java 是大小寫區(qū)分的)并且在文件名字末尾附加 ".java"。(如果文件名和類名不匹配,你的程序將不會編譯)
    例子:假設 'MyFirstJavaProgram' 是類名,那么文件應該被保存為 'MyFirstJavaProgram.java'。
  • public static void main(String args[]) - Java 程序處理從 main() 方法開始,這是每個 Java 程序的強制部分。

Java 標識符

所有的 Java 成分需要名字。類,變量和方法的名字叫做標識符。

在 Java 中有關標識符有幾點需要記住。它們是以下幾點:

  • 所有的標識符應該以字母(A 到 Z 或者 a 到 z),貨幣符號($)或者一個下劃線(_)。
  • 在第一個字符后,標識符可以有任意字符的組合。
  • 關鍵詞不能被用作標識符。
  • 最重要的是標識符是區(qū)分大小寫的。
  • 合法標識符的例子:age, $salary, _value, _1_value
  • 非法標識符的例子:123abc, -salary

Java 修飾符

像其他語言,使用修飾符修改類、方法等是有可能的。有兩種修飾符。

  • 訪問修飾符: default, public, protected, private
  • 非訪問修飾符: final, abstract, strictfp

我們將在下一節(jié)尋找更多有關修飾符的細節(jié)。

Java 變量

我們將看到在 Java 中變量的以下類型:

  • 本地變量
  • 類變量(靜態(tài)變量)
  • 實例變量(非靜態(tài)變量)

Java 數(shù)組

數(shù)組是存儲同一類型的多個變量的對象。然而一個數(shù)組自身是堆上的一個對象。我們將在下一章調查如何聲明,構建和初始化。

Java 枚舉

枚舉是在 Java 5.0 中被引進的。枚舉限制了一個變量擁有幾個預先定義的值中的一個。在枚舉列表中的值被稱為枚舉。

使用枚舉可能減少你代碼中的 bug。

例如如果我們?yōu)橐粋€新鮮果汁商店考慮一個應用程序,限制杯子的形狀小,中,大是有可能的。這將確保沒有任何人可以點出了小,中,大之外的型號。

示例

class FreshJuice{

   enum FreshJuiceSize{ SMALL, MEDIUM, LARGE }
   FreshJuiceSize size;
}

public class FreshJuiceTest{

   public static void main(String args[]){
      FreshJuice juice = new FreshJuice();
      juice.size = FreshJuice. FreshJuiceSize.MEDIUM ;
      System.out.println("Size :" + juice.size);
   }
}

注意: 枚舉能被自身聲明或者在一個類中。方法,變量,構造函數(shù)也能在枚舉中被定義。

Java 關鍵詞

以下的列表展示了 Java 中的保留字。這些保留字可能不會被作為常量或者變量或者任何其他標識符的名字而使用。

關鍵字 關鍵字 關鍵字 關鍵字
abstract assert boolean break
byte case catch char
class const continue default
do double else enum
extends final finally float
for goto if implements
import instanceof int interface
long native new package
private protected public return
short static strictfp super
switch synchronized this throw
throws transient try void
volatile while

Java 中的注釋

Java 像 C 和 C++ 一樣支持單行和多行注釋。所有的在注釋中的字符都會被 Java 編譯器忽略。

public class MyFirstJavaProgram{

   /* This is my first java program.
    * This will print 'Hello World' as the output
    * This is an example of multi-line comments.
    */

    public static void main(String []args){
       // This is an example of single line comment
       /* This is also an example of single line comment. */
       System.out.println("Hello World"); 
    }
} 

Java 中的數(shù)據(jù)類型

在 Java 中有兩種數(shù)據(jù)類型:

  • 原始數(shù)據(jù)類型
  • 引用/對象數(shù)據(jù)類型

原始數(shù)據(jù)類型

Java 支持的總共有 8 種原始數(shù)據(jù)類型。原始數(shù)據(jù)類型是由語言預定義的并且由關鍵字命名。讓我們現(xiàn)在仔細看看有關 8 種原始數(shù)據(jù)類型的細節(jié)。

  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char

引用數(shù)據(jù)類型

  • 引用變量是使用定義的類的構造函數(shù)創(chuàng)建的。它們被用來訪問對象。這些變量被聲明為一個特定的不能改變的類型。舉例來說,Employee, Puppy 等等。
  • Class 類,和不同的數(shù)組變量類型歸入引用數(shù)據(jù)類型。
  • 任何引用變量的默認值是 null。
  • 一個引用變量能被用來指向任何聲明類型的對象或者任何兼容的類型。
  • 例子: Animal animal = new Animal("giraffe");

Java 字面量

一個字面量是由固定值表示的源代碼。它們用代碼直接表示而沒有任何計算。

字面值可以被賦給任何原始數(shù)據(jù)類型。例如:

byte a = 68;
char a = 'A'

Java 中的 String 字面值是指定的,就像它們在大部分其他的語言中通過在一對雙引號間包含一系列的字符。String 字面值的例子如下:

"Hello World"
"two\nlines"
"\"This is in quotes\""

Java 語言給 String 和 char 字面值支持很少的特殊的換碼序列。它們是:

記號 符號表示
\n 新的一行(0x0a)
\r 回車(0x0d)
\f 進紙(0x0c)
\b 退格(0x08)
\s 空格(0x20)
\t 制表符
\" 雙引號
\' 點引號
\|反斜線
\ddd 八進制字符
\uxxxx 十六進制 UNICODE 字符

Java 訪問修飾符

Java 提供許多訪問修飾符來為類,變量,方法和構造函數(shù)設置訪問等級。四個訪問等級如下:

  • 對包可見。默認。不需要修飾符。
  • 僅對類(private)可見
  • 對所有可見(public)
  • 對包和所有的子類可見(protected)

Java 基本運算符號

Java 給操作變量提供了一組豐富的操作符。我們可以將所有的 Java 操作符區(qū)分成以下幾組:

算數(shù)操作符

運算符 描述 例子
+ 加-在操作符的每一側加值 A + B 將得出30
- 減-從左邊的操作數(shù)中減去右邊的操作數(shù) A - B 將得出 -10
* 乘-在操作符的每一側倍增值 A * B 將得出 200
/ 除-用右邊的操作數(shù)除左邊的操作數(shù) B \ A 將得出2
% 模-用右邊的操作數(shù)除左邊的操作數(shù)并返回余數(shù) B % A 將得出0
++ 增值-操作數(shù)的值增加 1 B++ 得出21
-- 減量-操作數(shù)的值減少 1 B-- 得出19

關系操作符

運算符 描述 例子
== 查看兩個操作數(shù)的值是否相等,如果是的話,情況就是真。 (A == B)不為真
!= 查看兩個操作數(shù)的值是否相等,如果值不相等,情況就是真。 (A != B)為真
> 查看左邊操作數(shù)的值是否大于右邊的操作數(shù),如果是的話,情況就是真。 (A > B)不為真
< 查看左邊操作數(shù)的值是否小于右邊的操作數(shù),如果是的話,情況就是真。 (A < B)為真
>= 查看左邊操作數(shù)的值是否大于或等于右邊的操作數(shù),如果是的話,情況就是真。 (A >= B)不為true.
<= 查看左邊操作數(shù)的值是否小于或等于右邊的操作數(shù),如果是的話,情況就是真。 (A <= B)為true.

位運算操作符

運算符 描述 例子
& 二進制的與操作符將一個位復制到結果中如果它存在于兩個操作數(shù)中 (A & B)將得出 12 即 0000 1100
| 二進制的或操作符復制一個位如果它存在在兩個操作數(shù)中的一個 (A | B)將得出 61 即 0011 1101
^ 二進制的異或操作符復制一個位如果它在一個而不是兩個操作數(shù)中被設置。 (A ^ B)將得出 49 即 0011 0001
~ 二進制補運算符是一元的,并有”烙位”的影響 (~A )將得出 -61 即 2 的補碼形式 1100 0011,因為一個有符號的二進制數(shù)。
<< 二進制左移運算符。左邊操作數(shù)的值按右邊操作數(shù)指定的位數(shù)向左移動。 A << 2 將得出 240 即 1111 0000
>> 二進制右移運算符。左邊操作數(shù)的值按右邊操作數(shù)指定的位數(shù)向右移動。 A >> 2 將得出 15 即 1111
>>> 右移填零運算符。左邊操作數(shù)的值按右邊操作數(shù)指定的位數(shù)向右移動并且值用 0 填充 A >>>2 將得出 15 即 0000 1111

邏輯操作符

運算符 描述 例子
&& 叫做邏輯與運算符。如果兩個操作數(shù)都不為 0,那么情況為真 (A && B) 為假
|| 叫做邏輯或運算符。如果兩個操作數(shù)中一個任何一個不為0那么情況為真。 (A || B) 為真
! 叫做邏輯非運算符。用來顛倒操作數(shù)的邏輯狀態(tài)。如果情況為真那么邏輯非運算符將是假。 !(A && B) 為真

賦值操作符

運算符 描述 例子
= 簡單的賦值運算符,將值從右邊的操作數(shù)賦給左邊的操作數(shù)。 C = A + B 將把 A + B 的值賦給 C
+= 加后賦值運算符,它將右邊操作數(shù)加上左邊的操作數(shù)并將結果賦給左邊的操作數(shù) C += A 和 C = C + A 相等
-= 減后賦值運算符,它將左邊操作數(shù)減去右邊的操作數(shù)并將結果賦給左邊的操作數(shù) C -= A 和 C = C - A 相等
*= 乘后賦值運算符,它用左邊操作數(shù)倍增右邊的操作數(shù)并將結果賦給左邊的操作數(shù) C = A 和 C = C A 相等
/= 除后賦值運算符,它用右邊操作數(shù)去除左邊的操作數(shù)并將結果賦給左邊的操作數(shù) C /= A 和 C = C / A 相等
%= 取模后賦值運算符,它使用兩個操作數(shù)取模并將結果賦給左邊的操作數(shù) C %= A 和 C = C % A 相等
<<= 左移后賦值運算符 C <<= 2 和 C = C << 2 相同
>>= 右移后賦值運算符 C >>= 2 和 C = C >> 2 相同
&= 按位與后賦值運算符 C &= 2 和 C = C & 2 相同
^= 按位異或后賦值運算符 C ^= 2 和 C = C ^ 2 相同
|= 按位或后賦值運算符 C |= 2 和 C = C | 2 相同

混雜操作符

很少有其它的操作符被 Java 語言支持。

條件操作符(?:)

條件操作符也以三元操作符為人所知。這個操作符由三個操作數(shù)組成并且被用來估計布爾表達式。操作符的目的是決定哪個值應該被賦給變量。操作符這樣寫:

variable x = (expression) ? value if true : value if false

instanceOf 操作符

這個操作符僅用于對象引用變量。操作符檢查對象是否是一種特別類型的(class 類型或者 interface 類型)。instanceOf 操作符這樣寫:

( Object reference variable ) instanceOf  (class/interface type)

Java 操作符的優(yōu)先級

種類 運算符 關聯(lián)性
后綴 () [] . (點操作符) 左到右
一元 ++ - - ! ~ 右到左
乘法 * / % 左到右
加法 + - 左到右
移動 >> >>> << 左到右
關系 > >= < <= 左到右
等式 == != 左到右
按位與 & 左到右
按位異或 ^ 左到右
按位或 | 左到右
邏輯與 && 左到右
邏輯或 || 左到右
條件 ?: 右到左
賦值 = += -= *= /= %= >>= <<= &= ^= |= 右到左
逗號 , 左到右

while 循環(huán)

一個 while 循環(huán)是一個允許你重復一個任務一定次數(shù)的控制結構。

語法

一個 while 循環(huán)的語法像這樣:

while(Boolean_expression)
{
   //Statements
}

do...while 循環(huán)

do...while 循環(huán)和 while 循環(huán)是類似的,除了 do...while 循環(huán)保證執(zhí)行至少一次。

語法

do...while 的語法像這樣:

do
{
   //Statements
}while(Boolean_expression);

for 循環(huán)

for 循環(huán)是一個重復控制結構,允許你有效地寫一個需要執(zhí)行指定次數(shù)的循環(huán)。

當你知道一個任務需要被重復多少次時,for 循環(huán)是有用的。

語法

for 循環(huán)的語法像這樣:

for(initialization; Boolean_expression; update)
{
   //Statements
}

Java 中增強的 for 循環(huán)

Java 5 中增強的 for 循環(huán)被引進。這主要是為數(shù)組而用的。

語法

增強的 for 循環(huán)像這樣:

for(declaration : expression)
{
   //Statements
}

break 關鍵字

break 關鍵字被用來停止整個循環(huán)。break 關鍵字必須在任何循環(huán)中或者一個 switch 語句中使用。

break 關鍵字將停止最內層的循環(huán)執(zhí)行和開始執(zhí)行在塊后代碼的下一行。

continue 關鍵字

continue 關鍵字可以在任何控制結構的循環(huán)中被使用。它使循環(huán)立即跳轉到循環(huán)的下一個迭代。

  • 在一個 for 循環(huán)中,continue 關鍵字使控制流立即跳轉到 update 語句。
  • 在一個 while 循環(huán)或者 do/while 循環(huán)中,控制流立即跳轉到布爾表達式。

語法

continue 的語法在任何循環(huán)中是一條單獨的語句:

continue;

if 語句

if 語句由一個有一條或多條語句伴隨的布爾表達式組成。

語法

if 語句的語法像這樣:

if(Boolean_expression)
{
   //Statements will execute if the Boolean expression is true
}

if...else 語句

if 語句可以后接一個可選的 else 語句,它當布爾表達式是錯誤時執(zhí)行。

語法

if...else 的語法像這樣:

if(Boolean_expression){
   //Executes when the Boolean expression is true
}else{
   //Executes when the Boolean expression is false
}

if...else if...else 語句

if 語句后可以跟一個可選的 else if...else 語句,它對于測試使用單獨的 if...else if 語句的不同狀況是很有用的。

語法

if...else 的語法像這樣:

if(Boolean_expression 1){
   //Executes when the Boolean expression 1 is true
}else if(Boolean_expression 2){
   //Executes when the Boolean expression 2 is true
}else if(Boolean_expression 3){
   //Executes when the Boolean expression 3 is true
}else {
   //Executes when the one of the above condition is true.
}

嵌入的 if...else 語句

嵌入 if...else 語句總是合法的。當使用 if,else if, else 語句時需要記住這幾點:

  • if 可以有 0 個或者 1 個 else 并且它必須在任何 else if 之后。
  • if 可以有 0 到許多 else if 并且它們必須在 else 之前。
  • 一旦一個 else if 成功,剩余的 else if 和 else 將不會執(zhí)行。

語法

一個嵌入的 if...else 語法像以下這樣:

if(Boolean_expression 1){
   //Executes when the Boolean expression 1 is true
   if(Boolean_expression 2){
      //Executes when the Boolean expression 2 is true
   }
}

switch 語句

switch 語句允許一個變量平等地用一系列的值進行測試。每一個值成為一個 case,進行 switch 的變量和每個 case 值比較是否相等。

語法

增強的 for 循環(huán)的語法像這樣:

switch(expression){
    case value :
       //Statements
       break; //optional
    case value :
       //Statements
       break; //optional
    //You can have any number of case statements.
    default : //Optional
       //Statements
}

Java 方法

一個 Java 方法是組合到一起來執(zhí)行一個操作的語句的集合。比如,當你調用 System.out.println 方法,系統(tǒng)確實為在控制臺顯示一條信息而執(zhí)行了幾條語句。

總體來說,方法由以下語法:

modifier returnValueType methodName(list of parameters) {
  // Method body;
}
  • 修飾符: 可選擇的修飾符,告訴編譯器如何調用方法。這定義了方法的入口類型。
  • 返回值: 方法會返回一個值。returnValueType 是方法返回的值的數(shù)據(jù)類型。一些方法執(zhí)行所需的操作而不返回一個值。在這種情況下,returnValueType 就是關鍵字 void。
  • 方法名: 這是方法的實際名字。方法名和參數(shù)列一起構成了方法簽名。
  • 參數(shù): 參數(shù)就像占位符。當一個方法被調用,你將一個值傳給參數(shù)。這個值被稱為實際參數(shù)或參數(shù)。參數(shù)列表指的是方法參數(shù)的類型,順序和數(shù)量。參數(shù)是可選的,那就是說,方法可能不含參數(shù)。
  • 方法體: 方法體包含定義方法做什么的語句集合。

Java 類&對象

  • 對象 - 對象有狀態(tài)和行為。例子:一條狗有狀態(tài):顏色,名字,品種以及行為-搖尾巴,吠,吃。一個對象是一個類的實例。
  • - 一個類能被定義成對象的模版/藍圖,用于描述對象類型的行為/狀態(tài)。

一個類像以下這樣:

public class Dog{
   String breed;
   int age;
   String color;

   void barking(){
   }

   void hungry(){
   }

   void sleeping(){
   }
}

一個類能含有任何以下的變量類型。

  • 本地變量 - 在方法,構造函數(shù)或者塊內定義的變量被稱為本地變量。變量將在方法內被聲明和初始化并且變量將在當方法完成時被銷毀。
  • 實例變量 - 實例變量是類內但是在方法外的變量。這些變量當類被載入時被實例化。實例變量能在任何那個特定類的方法,構造函數(shù)或塊內被訪問。
  • 類變量 - 類變量是在一個類中,在任何方法之外被聲明的變量,伴隨一個 static 關鍵字。

異常處理

方法使用 try 和 catch 關鍵字的組合捕獲異常。try/catch 塊被放置在可能會生成異常的代碼周圍。有 try/catch 塊的代碼被稱作受保護的代碼,使用 try/catch 的語法像以下這樣:

try
{
   //Protected code
}catch(ExceptionName e1)
{
   //Catch block
}

多個 catch 塊

一個 try 塊后能跟多個 catch 塊。多個 catch 塊的語法像這樣:

try
{
   //Protected code
}catch(ExceptionType1 e1)
{
   //Catch block
}catch(ExceptionType2 e2)
{
   //Catch block
}catch(ExceptionType3 e3)
{
   //Catch block
}

throws/throw 關鍵字

如果方法不處理檢查異常,方法必須用 throws 關鍵字聲明它。throws 關鍵字在方法簽名的最后出現(xiàn)。

你可以通過使用 throw 關鍵字拋出一個異常,可以是新實例化的或者剛剛捕獲到的。盡量理解 throws 和 throw 關鍵字間的不同。

finally 關鍵字

finally 關鍵字被用來創(chuàng)建跟在 try 塊后的代碼。finally 代碼塊總是執(zhí)行,無論一個異常是否發(fā)生。

使用 finally 塊允許你運行你想要執(zhí)行的任何 clean-type 語句,無論在受保護的代碼中發(fā)生了什么。

finally 塊在 catch 塊的末尾出現(xiàn)并有以下語法:

try
{
   //Protected code
}catch(ExceptionType1 e1)
{
   //Catch block
}catch(ExceptionType2 e2)
{
   //Catch block
}catch(ExceptionType3 e3)
{
   //Catch block
}finally
{
   //The finally block always executes.
}