標籤:linux for迴圈 efault 命名方式 建構函式 標識 private 基本 inux
先抄寫運行一個HelloWorld
1 public class HelloWorld {2 public static void main(String []args) {3 System.out.println("Hello World"); // 列印 Hello World4 }5 }
儲存為HelloWorld.java(這裡需要檔案名稱與類名相同
(linux環境)開啟終端並cd到當前Java檔案所在目錄
輸入:javac HelloWorld.java
摁下斷行符號編譯代碼,可以看到檔案目錄下出現編譯好的檔案HelloWorld.class
再輸入:java HelloWorld
就可以在視窗看到Hello World,
(這裡請無視掉兩行Picked up _JAVA_OPTIONS)
成功寫出了helloworld
然後開始學習
基本文法:
編寫程式時,需要注意的幾點:
1.大小寫敏感,即HelloWorld與helloworld不同
2.類名、變數名以及方法(函數)名都被稱為標識符,標識符命名規範與C++基本相同
- 類名:對於所有的類來說,類名的首字母應該大寫。如果類名由若干單片語成,那麼每個單詞的首字母應該大寫,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都應該以小寫字母開頭。如果方法名含有若干單詞,則後面的每個單字首大寫。
3.源檔案名稱必須和類名相同。當儲存檔案的時候,你應該使用類名作為檔案名稱儲存,檔案名稱的尾碼為.java。確切的說,是和類中public類的類名相同,所以一個Java檔案中只能有唯一的一個public類
4.所有的Java 程式由public static void main(String []args)方法開始執行。顯然它應該在publilc類裡。
Java修飾符:
像C++一樣,Java可以使用修飾符來修飾類中方法和屬性。主要有兩類修飾符:
- 存取控制修飾符 : default, public , protected, private
- 非存取控制修飾符 : final, abstract, static
修飾符用法及含義基本可類似於C++
final類似於const,abstract類似於virtual,static類似於static
上面是我瞎說的都不可信,後面再深入討論幾種修飾符
Java變數類型:
Java中主要有如下幾種類型的變數
局部變數
類變數(靜態變數)
成員變數(非靜態變數)
局部變數:
- 局部變數聲明在方法、構造方法或者語句塊中,在執行方法的時候建立,當它們執行完成後,變數將會被銷毀,所以只在聲明它的方法、構造方法或者語句塊中可見
- 局部變數是在棧上分配的
- 局部變數沒有預設值,聲明後必須初始化才可以使用
(函數和建構函式和C++一樣都好說,語句塊留到後面解釋)
執行個體變數:
- 執行個體變數聲明在一個類中,但在方法、構造方法和語句塊之外
- 執行個體變數具有預設值。數值型變數的預設值是0,布爾型變數的預設值是false,參考型別變數的預設值是null。變數的值可以在聲明時指定,也可以在構造方法中指定
- 執行個體變數在對象建立的時候建立,在對象被銷毀的時候銷毀
- 執行個體變數的值應該至少被一個方法、構造方法或者語句區塊引述,使得外部能夠通過這些方式擷取執行個體變數資訊(就是推薦你有getter和setter函數
- 存取修飾詞可以修飾執行個體變數,但不能修飾上面的局部變數
- 執行個體變數對於類中的方法、構造方法或者語句塊是可見的。一般情況下應該把執行個體變數設為私人。通過使用存取修飾詞可以使執行個體變數對子類可見
- 執行個體變數可以直接通過變數名訪問。但在靜態方法以及其他類中,就應該使用完全限定名:ObejectReference.VariableName。
類變數(靜態變數,很像C++的類的static變數)
- 類變數也稱為靜態變數,在類中以static關鍵字聲明,但必須在方法構造方法和語句塊之外
- 無論一個類建立了多少個對象,類只擁有類變數的一份拷貝
- 靜態變數除了被聲明為常量外很少使用。常量是指聲明為public/private,final和static類型的變數。常量初始化後不可改變
- 靜態變數儲存在靜態儲存區。經常被聲明為常量,很少單獨使用static聲明變數
- 靜態變數在程式開始時建立,在程式結束時銷毀
- 與執行個體變數具有相似的可見度。但為了對類的使用者可見,大多數靜態變數聲明為public類型
- 預設值和執行個體變數相似。數值型變數預設值是0,布爾型預設值是false,參考型別預設值是null。變數的值可以在聲明的時候指定,也可以在構造方法中指定。此外,靜態變數還可以在靜態語句塊中初始化
- 靜態變數可以通過:ClassName.VariableName的方式訪問
- 類變數被聲明為public static final類型時,類變數名稱一般建議使用大寫字母。如果靜態變數不是public和final類型,其命名方式與執行個體變數以及局部變數的命名方式一致
成員變數(非靜態變數)
大概就是執行個體變數中的非靜態變數
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++完整地寫一個能夠編譯的小代碼了(大概)
有些東西很像C++但也可能是暫時不清楚區別
所以如何類比還是因人而異吧
科科
參考資料:http://www.runoob.com/java/java-basic-syntax.html
Java基礎文法