一個(gè) Java 程序可以認(rèn)為是一系列對(duì)象的集合,而這些對(duì)象通過調(diào)用彼此的方法來協(xié)同工作。下面簡(jiǎn)要介紹下類、對(duì)象、方法和實(shí)例變量的概念。
- 對(duì)象:對(duì)象是類的一個(gè)實(shí)例,有狀態(tài)和行為。例如,一條狗是一個(gè)對(duì)象,它的狀態(tài)有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。
- 類:類是一個(gè)模板,它描述一類對(duì)象的行為和狀態(tài)。
- 方法:方法就是行為,一個(gè)類可以有很多方法。邏輯運(yùn)算、數(shù)據(jù)修改以及所有動(dòng)作都是在方法中完成的。
- 實(shí)例變量:每個(gè)對(duì)象都有獨(dú)特的實(shí)例變量,對(duì)象的狀態(tài)由這些實(shí)例變量的值決定。
第一個(gè)Java程序
下面看一個(gè)簡(jiǎn)單的 Java 程序,它將打印字符串 Hello World
實(shí)例
public class HelloWorld {
public static void main(
String []args) {
System.out.println("Hello World");
}
}
運(yùn)行實(shí)例 »
下面將逐步介紹如何保存、編譯以及運(yùn)行這個(gè)程序:
- 打開代碼編輯器,把上面的代碼添加進(jìn)去;
- 把文件名保存為:HelloWorld.java;
- 打開 cmd 命令窗口,進(jìn)入目標(biāo)文件所在的位置,假設(shè)是 C:\
- 在命令行窗口輸入 javac HelloWorld.java 按下回車鍵編譯代碼。如果代碼沒有錯(cuò)誤,cmd 命令提示符會(huì)進(jìn)入下一行(假設(shè)環(huán)境變量都設(shè)置好了)。
- 再鍵輸入 java HelloWorld 按下回車鍵就可以運(yùn)行程序了
你將會(huì)在窗口看到 Hello World
C : > javac HelloWorld.java
C : > java HelloWorld
Hello World
Gif 圖演示:
基本語(yǔ)法
編寫 Java 程序時(shí),應(yīng)注意以下幾點(diǎn):
- 大小寫敏感:Java 是大小寫敏感的,這就意味著標(biāo)識(shí)符 Hello 與 hello 是不同的。
- 類名:對(duì)于所有的類來說,類名的首字母應(yīng)該大寫。如果類名由若干單詞組成,那么每個(gè)單詞的首字母應(yīng)該大寫,例如 MyFirstJavaClass。
- 方法名:所有的方法名都應(yīng)該以小寫字母開頭。如果方法名含有若干單詞,則后面的每個(gè)單詞首字母大寫。
- 源文件名:源文件名必須和類名相同。當(dāng)保存文件的時(shí)候,你應(yīng)該使用類名作為文件名保存(切記 Java 是大小寫敏感的),文件名的后綴為 .java。(如果文件名和類名不相同則會(huì)導(dǎo)致編譯錯(cuò)誤)。
- 主方法入口:所有的 Java 程序由 public static void main(String []args) 方法開始執(zhí)行。
Java 標(biāo)識(shí)符
Java 所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標(biāo)識(shí)符。
關(guān)于 Java 標(biāo)識(shí)符,有以下幾點(diǎn)需要注意:
- 所有的標(biāo)識(shí)符都應(yīng)該以字母(A-Z 或者 a-z),美元符($)、或者下劃線(_)開始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下劃線(_)或數(shù)字的任何字符組合
- 關(guān)鍵字不能用作標(biāo)識(shí)符
- 標(biāo)識(shí)符是大小寫敏感的
- 合法標(biāo)識(shí)符舉例:age、$salary、_value、__1_value
- 非法標(biāo)識(shí)符舉例:123abc、-salary
Java修飾符
像其他語(yǔ)言一樣,Java可以使用修飾符來修飾類中方法和屬性。主要有兩類修飾符:
- 訪問控制修飾符 : default, public , protected, private
- 非訪問控制修飾符 : final, abstract, static, synchronized
在后面的章節(jié)中我們會(huì)深入討論 Java 修飾符。
Java 變量
Java 中主要有如下幾種類型的變量
- 局部變量
- 類變量(靜態(tài)變量)
- 成員變量(非靜態(tài)變量)
Java 數(shù)組
數(shù)組是儲(chǔ)存在堆上的對(duì)象,可以保存多個(gè)同類型變量。在后面的章節(jié)中,我們將會(huì)學(xué)到如何聲明、構(gòu)造以及初始化一個(gè)數(shù)組。
Java 枚舉
Java 5.0引入了枚舉,枚舉限制變量只能是預(yù)先設(shè)定好的值。使用枚舉可以減少代碼中的 bug。
例如,我們?yōu)楣暝O(shè)計(jì)一個(gè)程序,它將限制果汁為小杯、中杯、大杯。這就意味著它不允許顧客點(diǎn)除了這三種尺寸外的果汁。
實(shí)例
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 ;
}
}
注意:枚舉可以單獨(dú)聲明或者聲明在類里面。方法、變量、構(gòu)造函數(shù)也可以在枚舉中定義。
Java 關(guān)鍵字
下面列出了 Java 關(guān)鍵字。這些保留字不能用于常量、變量、和任何標(biāo)識(shí)符的名稱。
類別 |
關(guān)鍵字 |
說明 |
訪問控制 |
private |
私有的 |
protected |
受保護(hù)的 |
public |
公共的 |
default |
默認(rèn) |
類、方法和變量修飾符 |
abstract |
聲明抽象 |
class |
類 |
extends |
擴(kuò)充,繼承 |
final |
最終值,不可改變的(用于聲明變量,一旦該變量被設(shè)定,就不可以再改變?cè)撟兞康闹?/FONT>) |
implements |
實(shí)現(xiàn)(接口) |
interface |
接口 |
native |
本地,原生方法(非 Java 實(shí)現(xiàn)) |
new |
新,創(chuàng)建 |
static |
靜態(tài) |
strictfp |
嚴(yán)格,精準(zhǔn) |
synchronized |
線程,同步 |
transient |
短暫 |
volatile |
易失 |
程序控制語(yǔ)句 |
break |
跳出循環(huán) |
case |
定義一個(gè)值以供 switch 選擇 |
continue |
繼續(xù) |
default |
默認(rèn) |
do |
運(yùn)行 |
else |
否則 |
for |
循環(huán) |
if |
如果 |
instanceof |
實(shí)例 |
return |
返回 |
switch |
根據(jù)值選擇執(zhí)行 |
while |
循環(huán) |
錯(cuò)誤處理 |
assert |
斷言表達(dá)式是否為真 |
catch |
捕捉異常 |
finally |
有沒有異常都執(zhí)行 |
throw |
拋出一個(gè)異常對(duì)象 |
throws |
聲明一個(gè)異?赡鼙粧伋 |
try |
捕獲異常 |
包相關(guān) |
import |
引入 |
package |
包 |
基本類型 |
boolean |
布爾型 |
byte |
字節(jié)型 |
char |
字符型 |
double |
雙精度浮點(diǎn) |
float |
單精度浮點(diǎn) |
int |
整型 |
long |
長(zhǎng)整型 |
short |
短整型 |
變量引用 |
super |
父類,超類 |
this |
本類 |
void |
無返回值 |
保留關(guān)鍵字 |
goto |
是關(guān)鍵字,但不能使用 |
const |
是關(guān)鍵字,但不能使用 |
null |
空 |
Java注釋
類似于 C/C++、Java 也支持單行以及多行注釋。注釋中的字符將被 Java 編譯器忽略。
public class HelloWorld {
public static void main(String []args){
System.out.println("Hello World");
}
}
Java 空行
空白行或者有注釋的行,Java 編譯器都會(huì)忽略掉。
繼承
在 Java 中,一個(gè)類可以由其他類派生。如果你要?jiǎng)?chuàng)建一個(gè)類,而且已經(jīng)存在一個(gè)類具有你所需要的屬性或方法,那么你可以將新創(chuàng)建的類繼承該類。
利用繼承的方法,可以重用已存在類的方法和屬性,而不用重寫這些代碼。被繼承的類稱為超類(super class),派生類稱為子類(subclass)。
接口
在 Java 中,接口可理解為對(duì)象間相互通信的協(xié)議。接口在繼承中扮演著很重要的角色。
接口只定義派生要用到的方法,但是方法的具體實(shí)現(xiàn)完全取決于派生類。
Java 源程序與編譯型運(yùn)行區(qū)別
如下圖所示:
