Java快速入門
Java 是什麼?
Java 的特點:
- 麵向對象
- 平台無關(跨平台):
- 簡單
- 安全
- 體係結構 - 中性
- 可移植
- 健壯
- 多線程
- 解釋型
- 高性能
- 分布式
- 動態
Java環境設置:
Java SE可免費提供(獲得),如下的鏈接下載Java。所以,根據您的實際操作係統版本下載。
可以參考安裝指南的完整細節。
Java安裝
本教學下載的是 完成後,安裝即可。本教學中我們使用 NetBeans IDE 來編寫Java代碼。
安裝Java 及設置環境變量請參考:Java安裝及環境變量設置
Java 基礎語法
-
對象 - 對象有狀態和行為。例如:狗有狀態色,名字,品種以及行為 - 搖頭晃腦,吠叫,吃。對象是類的一個實例。
-
類 - 類可以被定義為一個模板/藍本描述該行為/狀態及其支持對象類型。
-
方法 - 方法基本上是一個行為。一個類可以包含(擁有)多個方法。 將邏輯寫入方法,數據操縱和所有的動作都會被執行。
-
實例變量 - 每個對象都有其獨特(唯一)的實例變量。對象的狀態是由分配給這些瞬間變量的值來創建。
第一個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 by Yiibai Yiibai } }
關於Java程序,記住以下幾點非常重要。
-
區分大小寫 - Java是大小寫敏感的,這意味著標識Hello和hello在Java中有不同的含義。
-
類名稱 - 對於所有的類名首字母應該大寫。
如果幾個單詞來形成一個類的名字,那麼每個單詞的第一個字母應該大寫。
例如:class MyFirstJavaClass -
方法名稱 - 所有方法的名稱的開始字母應該用小寫字母。
如果幾個單詞來形成方法的名稱,那麼每個單詞的第一個字母要大寫。
例如:public void myMethodName() -
程序文件名 - 程序文件名應當和類名完全匹配。
保存文件時,應該使用類名保存它(記住Java是區分大小寫),再追加 '.java' 到文件名稱的末尾.(如果文件名和類名不匹配程序將無法編譯)。
例如:假設“MyFirstJavaProgram”是類名。那麼這個文件應當被保存為 'MyFirstJavaProgram.java' -
public static void main(String args[]) - java程序處理是從main()方法開始,這是每一個Java程序開始的必須部分.
Java 標識符:
所有的Java組件都需要一個名字。用於類,變量和方法名稱叫做標識符。
在Java中的標識符有幾點要記住。它們如下:
-
所有的標識符應該由字母(A至Z或a到z),貨幣字符($)或下劃線(_)組成。
-
標識符的第一個字符之後可以具有字符的任意組合。
-
關鍵字不能被用作標識符。
-
標識符最重要特點是區分大小寫的。
-
合法標識符的示例:age, $salary, _value, __1_value
-
非法標識符的示例:123abc, -salary
Java修飾符:
就像其它語言,它可以改變類,方法等,通過使用修辭符。有兩大類的修辭符。
-
訪問修飾符 : default, public , protected, private
-
非訪問修飾符 : final, abstract, strictfp
我們將會在下一節中研究/學習有關修飾符的更多細節。
Java 變量:
我們會看到下麵Java的變量類型:
- 局部變量
- 類變量(靜態變量)
- 實例變量(非靜態變量)
Java 數組:
數組是存儲相同類型的多個變量的對象。然而數組本身就是在堆上的對象。我們將探討如何聲明,構建並初始化在即將到來的章節。
Java 枚舉:
枚舉是在Java 5.0中才開始進行介紹。枚舉一個變量隻限於幾個預定義值之一。在此枚舉列表中的值稱為枚舉。
通過使用枚舉能夠減少代碼的錯誤的數量。
因為,如果我們考慮了鮮榨果汁店的一個應用實例將有可能限製玻璃尺寸為小,中,大。這將確保不會允許任何人訂製尺寸在小型,中型或大型之外的類型。
例子:
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); } }
注:枚舉可以聲明為它們自己或在類中。方法,變量,構造函數可以也可以在枚舉內定義。
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數據類型
在Java中可用兩種數據類型:
-
原始數據類型
-
引用/對象數據類型
基本數據類型
Java語言支持八種原始數據類型。原始數據類型是由語言預定義且由關鍵字命名。 現在讓我們來詳細看看八種原始數據類型。
- byte
- short
- int
- long
- float
- double
- boolean
- char
引用數據類型
-
使用類定義的構造創建引用變量。它們是用來訪問對象。這些變量被聲明為一個不能改變的特定類型。例如, Employee, Puppy 等。
-
類對象,以及各種類型的數組變量,都在參考數據類型。
-
任何引用變量的缺省值是null。
-
引用變量可以用於引用聲明類型或任何兼容類型的任何對象。
-
例如: Animal animal = new Animal("giraffe");
Java 字麵值
字麵值是一個源代碼表示的固定值。它們是直接用代碼來表示,無需任何計算。
字麵值可以被分配給任何基本類型的變量。例如:
byte a = 68; char a = 'A'
在Java中的字符串字麵值規定,就像它們在大多數其他語言的字符序列一樣,使用一對雙引號包圍在它們之間。字符串的例子如下:
"Hello World" "two\nlines" "\"This is in quotes\""
Java語言支持字符串以及一些特殊的轉義序列字符文字。它們是:
符號 | 字符表示 |
---|---|
\n | 新一行 (0x0a) |
\r | 回車 (0x0d) |
\f | 換頁 (0x0c) |
\b | 退格 (0x08) |
\s | 空格 (0x20) |
\t | tab |
\" | 雙引號 |
\' | 單引號 |
\\ | 反斜線 |
\ddd | 八進製字符 (ddd) |
\uxxxx | 十六進製UNICODE字符 (xxxx) |
Java訪問修飾符:
Java提供了一些訪問修飾符來設置類,變量,方法和構造函數的訪問級彆。這四個訪問級彆分彆是:
-
可見到包。不需要修飾這是默認的。
-
隻可見到類(private)。
-
可見到所有 (public).
-
可見到包和所有子類(protected).
Java基本運算符
Java提供了一套豐富的運算符來操作變量。我們可以把所有的Java運算符分成以下幾組:
算術運算符
假設A=10, B=20,那麼運算符 | 描述 | 示例 |
---|---|---|
+ | 加法 - 對運算符的兩側的值增加 | A + B = 30 |
- | 減法- 從左操作數減去右操作數 | A - B = -10 |
* | 乘法- 相乘操作符兩側值 | A * B = 200 |
/ | 除法 - 由右側操作數除以左側操作數 | B / A = 2 |
% | 模數- 由右側操作數除以左側操作數的餘數 | B % A = 0 |
++ | 增量- 操作數的值增加1 | B++ = 21 |
-- | 遞減 - 操作數的值減小1 | B-- = 19 |
關係運算符
運算符 | 描述 | 示例 |
---|---|---|
== | 檢查兩個操作數的值是否相等,如果是,則條件為true。 | (A == B) 不為 true. |
!= | 檢查兩個操作數的值是否相等,如果值不相等,則條件為true。 | (A != B) 為 true. |
> | 檢查左邊的操作數的值是否大於右操作數的值,如果是,則條件為true。 | (A > B) 不為 true. |
< | 檢查左邊的操作數的值是否小於右操作數的值,如果是,則條件為true。 | (A < B) 為 true. |
>= | 檢查左邊的操作數的值是否大於或等於右操作數的值,如果是,則條件為true。 | (A >= B) 不為 true. |
<= | 檢查左操作數的值是否小於或等於右操作數的值,如果是,則條件變為true。 | (A <= B) 為 true. |
位運算符:
運算符 | 描述 | 示例 |
---|---|---|
& | 二進製與(AND)操作符拷貝位的結果,如果它存在於兩個操作數。 | (A & B) = 12 也就是 0000 1100 |
| | 二進製或(OR)操作符拷貝位,如果它存在一個操作數中。 | (A | B) = 61 也就是 0011 1101 |
^ | 二進製異或操作符拷貝,如果它被設置在一個操作數而不是兩個比特。 | (A ^ B) = 49 也就是 0011 0001 |
~ | 二進製的補運算符是一元的,具有“翻轉”位的效應。 | (~A ) = -61 也就是 1100 0011 以2的補碼形式,由於它是一個帶符號二進製數。 |
<< | 二進製向左移位運算符。左邊的操作數的值由右操作數指定的位數向左移動。 | A << 2 = 240 也就是 1111 0000 |
>> | 二進製向右移位運算符。左邊的操作數的值是通過右操作數指定的位數向右移動。 | A >> 2 = 15 也就是 1111 |
>>> | 右移補零運算符。左邊的操作數的值是通過右操作數指定的位數向右移動,並轉移值以零填充。 | A >>>2 = 15 也就是 0000 1111 |
邏輯運算符:
運算符 | 描述 | 示例 |
---|---|---|
&& | 所謂邏輯與運算符。如果兩個操作數是非零那麼條件為true。 | (A && B) 為 false. |
|| | 所謂邏輯OR運算符。如果任何兩個操作數都非零那麼條件變為true。 | (A || B) 為 true. |
! | 所謂邏輯非運算符。使用反轉其操作數的邏輯狀態。如果條件為true,那麼邏輯非運算結果為false。 | !(A && B) 為 true. |
賦值運算符:
運算符 | 描述 | 示例 |
---|---|---|
= | 簡單的賦值操作符,賦值是從右側的操作數到左側的操作數 | C = A + B 將分配 A + B 的值到 C |
+= | 加法與賦值運算符,它將右操作數加上左操作數並分配結果左操作數 | C += A 相當於 C = C + A |
-= | 減法並賦值運算符,從左邊的操作數減去右操作數並分配結果給左操作數 | C -= A 相當於 C = C - A |
*= | 乘法與賦值運算符,左操作數乘以右操作數並分配結果給左操作數 | C *= A 相當於 C = C * A |
/= | 除法與賦值運算符, 左操作數除以右操作數並分配結果給左操作數 | C /= A 相當於 C = C / A |
%= | 模數與賦值運算符, 這需要使用模量兩個操作數並分配結果左操作數 | 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語言支持其他一些運算符。
條件運算符 ( ? : ):
條件運算也被稱為三元運算符。這個操作符包括三個操作數,用於計算布爾表達式。 此運算符的目標是決定哪個值應分配給變量。運算符可寫為:
variable x = (expression) ? value if true : value if false
instanceOf 運算符:
此運算符僅用於對象引用變量。此運算符檢查對象是否是特定類型(類類型或接口類型)。instanceOf運算被寫為:
( Object reference variable ) instanceOf (class/interface type)
Java運算符的優先級:
分類 | 操作符 | 關聯性 |
---|---|---|
後綴 | () [] . (點操作符) | 左到右 |
一元 | ++ - - ! ~ | 從右到左 |
乘法 | * / % | 左到右 |
加法 | + - | 左到右 |
移動 | >> >>> << | 左到右 |
關係 | > >= < <= | 左到右 |
相等 | == != | 左到右 |
位AND | & | 左到右 |
位XOR | ^ | 左到右 |
位 OR | | | 左到右 |
邏輯 AND | && | 左到右 |
邏輯OR | || | 左到右 |
條件 | ?: | 從右到左 |
賦值 | = += -= *= /= %= >>= <<= &= ^= |= | 從右到左 |
逗號 | , | 左到右 |
while 循環:
while循環是一種控製結構,可以讓你重複執行任務的若乾次。
語法
while循環的語法是:
while(Boolean_expression) { //Statements }
do ... while循環:
do... while 循環類似於 while 循環,不同的是do ... while循環是保證至少執行一次。
語法
do ... while循環的語法是:
do { //Statements }while(Boolean_expression);
for 循環:
for循環是一個循環控製結構,可以有效地編寫需要執行的特定次數的循環。
當知道任務要多少次重複,一個for循環是非常有用的。
語法
for循環的語法是:
for(initialization; Boolean_expression; update) { //Statements }
改進Java的for循環:
從Java5中開始增強了for循環。這主要是用於數組。
語法
增強的for循環的語法是:
for(declaration : expression) { //Statements }
break關鍵字:
關鍵字break用於停止整個循環。Break關鍵字必須使用在任何循環或switch語句中。
Break關鍵字將停止最內層循環的執行,並開始執行的下一行代碼塊之後的語句。
continue關鍵字:
continue關鍵字可以在任一環的控製結構可以使用。它會導致循環立即跳轉到循環的下一次迭代。
-
在for循環中,continue關鍵字使流程控製立即跳轉到update語句。
-
在while循環或do/while循環,流控製立即跳轉到布爾表達式。
語法
continue關鍵字是在任何環路內的單個語句,其語法如下:
continue;
if 語句:
if 語句包含一個布爾表達式後跟一個或多個語句。
語法
一個if語句的語法:
if(Boolean_expression) { //Statements will execute if the Boolean expression is true }
if...else 語句:
if語句可以跟著一個可選的else語句,當else執行時,if 中布爾表達式是假的。
語法
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 else語句時有幾點要牢記。
-
一個 if 可以有零或一個else,它必須跟從 else if 之後。
-
一個 if 可以零個或多個 else if ,它們必須在 else 之前。
-
一旦一個 else if 條件成功,其他剩餘的 else if 或 else 將不會被測試。
語法
嵌套 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 的語法是:
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方法是組合在一起來執行操作語句的集合。當調用System.out.println方法,例如,係統實際上是在控製台上顯示執行的語句的消息。
在一般情況下,方法的語法如下:
modifier returnValueType methodName(list of parameters) { // Method body; }
方法定義包含一個方法頭和方法體。下麵是一個方法的所有部分:
-
修飾符: 修飾符,這是可選的,告訴編譯器如何調用該方法。這定義了該方法的訪問類型。
-
返回類型: 方法可能會返回一個值。returnValueType是方法返回的值的數據類型。有些方法執行所需的操作不返回任何值。在這種情況下,returnValueType是關鍵字 void.
-
方法名稱: 這是該方法的實際名稱。方法的名稱和參數表共同構成方法簽名。
-
參數: 參數就像一個占位符。當調用一個方法,傳遞一個參數值。這個值被稱為實際參數或參數。參數列表表示類型,順序和方法的參數的數量。參數是可選的;也就是說,一個方法可包含任何參數。
-
方法體: 方法體包含了定義方法執行語句的集合。
Java類和對象:
-
對象 - 對象有狀態和行為。例如: 狗有狀態顏色,名字,品種以及行為-擺尾,叫聲,吃。對象是類的一個實例。
-
類- 類可以被定義為一個模板/藍本來描述行為/狀態,其類型支持對象。
一個類的示例如下:
public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ } }
一個類可以包含任何下列變量類型。
-
局部變量 . 在方法,構造函數或塊裡麵定義的變量稱為局部變量。變量將被聲明在方法中並初始化,當方法調用完成變量也將被銷毀。
-
實例變量 . 實例變量是在一個類裡,在方法以外的變量。這些變量在類加載時實例化。實例變量可以在類內部的任何方法,構造函數或特定類的塊中訪問。
-
類變量 . 類變量是在一個類中聲明的變量,任何方法外,用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關鍵字出現在方法簽名的結束位置。
可以拋出一個異常,用throw關鍵字在一個新實例化或一個剛剛捕獲的異常。 試著去了解 throws 和 throw 關鍵字的不同。
finally 關鍵字
finally關鍵字用於創建一個代碼塊在try塊後麵。 finally塊中的代碼始終執行,無論是否發生異常。
使用finally塊,可以運行要執行,無論是在受保護的代碼會不會發生發生異常都會被執行,可以放一些清理工作之類的語句(代碼)。
finally塊必須出現在catch塊的結束位置,它的語法如下:
try { //Protected code }catch(ExceptionType1 e1) { //Catch block }catch(ExceptionType2 e2) { //Catch block }catch(ExceptionType3 e3) { //Catch block }finally { //The finally block always executes. }
Java編程語言的完整細節,建議通過 Java教學 來進一步學習。