一、Java主類結構
Java語言是面向對象的程序設計語言,Java程序的基本組成單元就是類,類體中又可包括屬性與方法兩部分。每一個Java本地應用程序都必須包含一個main()方法,main()方法為Java應用程序的入口,包含main()方法的類稱之為主類。一個完整的主類結構通常由定義包語句、定義類語句、定義主方法語句、定義變量語句和導入API類庫5部分組成,下面進行詳細介紹。
1、定義包
開發應用程序時,通常將Java類放在指定的包中,每個包內通常放置同類的Java類,這樣可以使應用程序的結構更加清晰,便於以后維護。在Java中,可以使用package關鍵字指定Java類所在包。例如,定義類包為structure的代碼如下:
說明:Java包,在計算機硬盤上的表現形式為文件夾,例如,將First.java類放置在com包中,那么該Java文件將被放置在com文件夾中。如圖所示。
2、定義類
一個Java應用程序是由若干個類組成的。通過class關鍵字來定義類,例如,要定義一個名稱為FirstClass的公共類,可以使用以下代碼:
說明:main()方法是程序入口方法。它有固定的格式,方法的參數也固定為一個字符串數組。
3、定義變量
通常將類的屬性稱之為類的全局變量(或成員變量)。將方法中的屬性稱之為局部變量。全局變量聲明在類體當中,局部變量聲明在方法體當中。全局變量和局部變量都有各自的應用范圍。
4、導入API類庫
Java類必須執行導入才能夠被當前類使用。在Java語言中可以通過“import”關鍵字導入相關的類。例如,要導入java.util.Date類,可以使用以下代碼:
注意:Java語言是嚴格區分大小寫的。例如:關鍵字“class”不能寫成“Class”,同理“FirstClass”與“Firstclass”是兩個不同的Java類。
最后我們通過一個簡單的程序來整體看看Java主類的結構。
例 :創建一個Java主類,用於在控制台輸出“FirstClass,我的第一個Java類”。
(1)在Eclipse中創建一個Java項目,名稱為TestProject。(Eclipse使用方法:
http://jingyan.baidu.com/article/48b558e373e1ea7f39c09a57.html,如果不習慣中 文版的就不要下載中文包)
(2)在“包資源管理器”中,展開剛建的TestProject節點,在src節點上,單機鼠標右鍵,在彈出快捷菜單中選擇“新建”/“類菜單項。
(3)在彈出的“新建Java類”對話框的包“包”文本框中輸入包名structure;在“名稱”文本框中輸入類名FirstClass;由於要創建主類,所以需要選中“public static void main(String[] args)”復選框。
(4)單擊“完成”按鈕,完成類的創建。這時,該類將被自動打開,並且該類中已經自動生成main方法。
(5)將FirstClass類的代碼修改為以下代碼,用於輸出“FirstClass,我的第一個Java類”。
(6)運行該類。
Java類需要經過編譯成“.class”后綴的二進制字節碼文件,然后才能夠運行,在Eclipse開發工具中,編譯過程是自動的,我們可以直接運行主類程序。方法是:在“包資源管理器”視圖中找到要運行的類文件(該類必須包含main()方法),在文件上單擊鼠標右鍵,在彈出菜單中選擇“運行方式”/“Java應用程序”命令。運行該類后,在控制台中將輸出“FirstClass,我的第一個Java類”,如圖所示。
二、代碼注釋與編碼規范
1、代碼注釋
通過在程序代碼中添加注釋可提高程序的可讀性。在Java源程序文件的任意位置都可添加注釋語句。注釋中的文字Java編譯器並不進行編譯,所有代碼中的注釋文字並不對程序產生任何影響。Java語言提供了3種添加注釋的方法。分別為:單行注釋、多行注釋和文檔注釋。
(1).單行注釋
“//”為單行注釋標記,從符號“//”開始直到換行為止的所有內容均作為注釋而被編譯器忽略。
語法如下:
//注釋內容
例如以下代碼為聲明的int型變量添加注釋。
int age ; //定義int型變量用於保存年齡信息
(2).多行注釋
“/* */”為多行注釋標記,符號“/*”與“*/”之間的所有內容均為注釋內容。注釋當中的內容可以換行。
語法如下:
/*
注釋內容1
注釋內容2
…
*/
注意:在多行注釋當中可嵌套單行注釋。例如:
/*
程序名稱:Hello word //開發時間:2016-03-27
*/
但在多行注釋中不可以嵌套多行注釋,例如以下代碼為非法代碼。
/*
程序名稱:Hello word
/*開發時間: 2016-03-27
作者:李四
*/
*/
(3).文檔注釋
“/** */”為文檔注釋標記。符號“/**”與“*/”之間的內容均為文檔注釋內容。當文檔注釋出現在任何聲明(如類的聲明、類的成員變量的聲明、類的成員方法聲明等)之前時,會被JavaDoc文檔工具讀取,作為Javadoc文檔內容。文檔注釋的格式與多行注釋的格式相同。對與初學者而言,文檔注釋並不是很重要,了解即可。
例如,為First類的主方法添加文檔注釋的關鍵代碼如下:
1 /** 2 * 這是First類的主方法,它將輸出成員變量s1 和局部變量s2的連接字符串。 4 * @param args 8 * 主方法的入口參數,用於接收命令行參數 10 */ 13 public static void main(String[] args) { // 主方法 14 15 String s1 = "局部變量1";// 局部變量 16 17 String s2 = "局部變量2"; // 局部變量 18 19 System.out.print(s1); // 輸出變量s1 20 21 System.out.println(s2); // 輸出變量s2 22 23 }
添加了文檔注釋的類成員,會在Eclipse的“JavaDoc”視圖中顯示相應的說明,另外,在編輯器中,把鼠標停留在該方法或引用該方法的位置上,也會出現懸浮提示信息。如圖所示。
技巧:在Java源文件編輯器中,選擇某個成員方法或成員變量,然后按<Alt>+<Shift>+<J>快捷鍵,Eclipse會自動添加JavaDoc文檔注釋結構,如果是方法的話,還會自動添加參數名稱。
說明:一定要養成良好的編程風格,在軟件編碼規范中提到“可讀性第一,效率第二。”所以程序員有必要在程序中添加適量的注釋來提高程序的可讀性和可維護性,程序中注釋要占程序代碼總量的20%~50%。
2、編碼規范
編碼規范對於程序開發人員很重要,遵循編碼規范所編寫的程序代碼可讀性高,有維護價值,如果你編寫的程序代碼別人看不懂、甚至沒有人願意看,那么你所編寫的程序代碼就一文不值,而且這樣的程序,再過一段時間連開發者自己也會忘記程序的業務邏輯,無法有效地維護程序代碼。
在學習開發的過程中一定要養成良好的編碼規范,對於規整的代碼格式會給程序的開發與日后的維護提供很大方便。
(1) 每條語句要單獨占一行,一條命令要以分號結束。
注意:在程序代碼中的分號必須為英文狀態下,初學者經常會將“;”寫成中文狀態下的“;”,此時編譯器會報出“illegal character”(非法字符)這樣的錯誤信息。
(2)在聲明變量時,盡量使每個變量的聲明單獨占一行,即使是相同的數據類型也要將其放置在單獨的一行上。這樣有助於添加注釋。對於局部變量應在聲明的同時對其進行初始化。
(3)在Java代碼中,關鍵字與關鍵字間如果有多個空格,這些空格均被視作一個。例如:
而多於的空格沒有任何意義,為了便於理解、閱讀,應控制好空格的數量。
(4) 變量的命名要盡量使用有意義的名稱,最好采用英文描述符。另外,變量的第一個單詞小寫,第二個以后的單詞要求首字母大寫。例如,productPrice、age、name、userName。
(5)類名和接口的命名不但要求使用有意義的單詞而且所有單詞的首字母都要大寫,例如:ProductFactory、UserInfo。
(6) 常量的所有字母均為大寫,多個單詞使用“_”下划線分割。例如,PRODUCT_UNIT。
(7)適當的縮進代碼,使代碼對齊。但也不要添加過多的縮進,以至於代碼被縮進出很遠,這樣同樣能導致代碼的可讀性下降。
(8)合理的使用空白行,這樣可以將邏輯相關的代碼分隔開,以提高可讀性。
(9)為了方便日后的維護,不要使用技術性很高、難懂、易混淆判斷的語句。通常情況下,由於程序的開發與維護不能是同一個人,所以應盡量使用簡單的技術完成程序需要的功能。
(10)對於關鍵的方法要多加注釋,這樣有助於閱讀者很快地了解代碼結構。
(11)遵循工程規定的統一代碼格式,一般情況下,直接使用IDE自帶的默認代碼格式對代碼進行格式化。,例如,在Eclipse中,可以使用〈Ctrl+Shift+F〉快捷鍵,自動格式化程序代碼。
三、基本數據類型
1、整數型
整數類型用來存儲整數數值,即沒有小數部分的數值。整數類型可以是正數,也可以是負數。整型常量在Java程序中有3種表示形式,分別為十進制、八進制和十六進制。
(1)十進制
十進制是Java語言默認的數制,所以使用正常的表示形式,例如,120、0、-127、340。
注意:不能以0作為十進制數的開頭(0除外)。
(2)八進制
八進制的表現形式以最高位的數字0做區分,如果最高位不是0,那么Java將把它解釋為十進制,否則解釋為八進制。例如,0123(轉化成十進制數為83)、-0123(轉化成十進制數為-83)。
說明:八進制的最大單個數字是7,7再加1就是10,它和十進制的8是相等的。八進制的字面量包括“0、1、2、3、4、5、6、7”。例如,0123(轉化成十進制數為83)、-0123(轉化成十進制數為-83)
注意:八進制必須以0開頭。
(3)十六進制
十六進制的表現形式是在數的最高位添加“0x”標識,其中“x”字符不區分大小寫。例如,0x25(轉化成十進制數為37)、0Xb01e(轉化成十進制數為45086)。
說明:十六進制主要用於二進制的簡化表達方式,十六進制的1位數字可以轉換成4位二進制數字。超出9的數字在十六進制中以字母表示,其字面量包括“0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F”,其中“A~F”分別代碼十進制的“10~15”。例如:0x25(轉化成十進制數為37)、0Xb01e(轉化成十進制數為45086)
注意:十六進制必須以0X或0x開頭。
整型變量根據它在內存中所占大小的不同,可分為byte、short、int和long四種類型。它們具有不同的取值范圍,如表所示。
以int型變量為例,介紹整型變量的定義格式。
實例 :定義int型變量,實例代碼如下:
int m; //定義int型變量m int x,y; //定義int型變量x,y int a = 450,b = -462; //定義int型變量a,b並賦給初值
在定義以上4種類型變量時,要注意變量的值不能超過變量所能接受的最大值與最小值,否則會出現錯誤。Java默認的整數類型是int,如果要標記整數是long類型,必須在數字末尾添加字母L或l(小寫的L)。例如 long num = 2147483650L。
說明:在數字末尾添加L或l(小寫的L)標識long類型整數,一般都發生在整數大於int最大取值范圍時。因為Java默認的整數類型是int。
實例: 在項目中創建類Number,在主方法中創建不同數值型變量,並將這些變量相加,將和輸出。
1 public class Number { //創建類 2 3 public static void main(String[] args) { //主方法 4 5 byte mybyte = 124; //聲明byte型變量並賦值 6 7 short myshort = 32564; //聲明short型變量並賦值 8 9 int myint = 45784612; //聲明int型變量並賦值 10 11 long mylong = 46789451; //聲明long型變量並賦值 12 13 long result = mybyte+myshort+myint+mylong; //獲得各數相加后的結果 14 15 System.out.println("結果為:"+result); //將以上變量相加的結果輸出 16 17 } 18 19 }
程序行結果如圖所示。
2、浮點類型
浮點類型表示有小數部分的數字,Java語言中浮點類型分為單精度浮點類型(float)和雙精度浮點類型(double)。它們具有不同的取值范圍,如表所示。
Java語言默認使用double雙精度類型的浮點數,就像int是默認的整數類型一樣。如果將實數賦值給float類型的變量,則需要在實數末尾添加F或f作為后綴,否則被認為是double類型數值。
例: 定義浮點類型變量,代碼如下:
double sum=3799.39; // 雙精度是默認浮點類型 double length=156.34D; // 雙精度可以添加D標識 float price=34.50F; // 單精度需要添加F標識 double length1=156.34d; // 雙精度可以添加d標識 float price1=34.50f; // 單精度需要添加f標識 System.out.println("sum="+sum); //輸出結果為:sum=3799.39 System.out.println("length="+length); //輸出結果為:length=156.34 System.out.println("price="+price); //輸出結果為:price=34.5 System.out.println("length1="+length1); //輸出結果為:length1=156.34 System.out.println("price1="+price1); //輸出結果為:price1=34.5
上面的代碼,在控制台中輸出的結果如圖所示。
說明:在聲明double類型的數據時,可以使用后綴“d”或“D”來明確表明這是一個double類型數據。但是加不加“D”或“d”沒有硬性規定,可以加也可以不加,不過聲明float型變量時如果不加“F”或“f”,編譯器會認為是double類型而出錯。
3、字符類型
(1).char型
字符類型(char)用於存儲單個字符,占用16位(兩個字節)的內存空間。在定義字符型變量時,要以單引號表示,例如 's' 表示一個字符。而 "s" 則表示一個字符串,雖然它只有一個字符,但由於使用雙引號,所以它仍然表示字符串,而不是字符。
使用char關鍵字可定義字符變量。
例: 聲明字符型變量,實例代碼如下:
char x ='a';
由於字符a在unicode表中的排序位置是97。因此,允許將上面的語句寫成:
char x = 97;
同C、C++語言一樣,Java語言也可以把字符作為整數對待。由於unicode編碼采用無符號編碼,可以存儲65536個字符(0x0000)~0xffff),所以Java中的字符幾乎可以處理所有國家的語言文字。若想得到一個0~65536之間的數所代表的unicode表中的相應位置上的字符,也必須使用char型顯示轉化。
例: 在項目中創建類Gess,編寫如下代碼,實現將unicode表上某些位置上的字符以及一些字符在unicode表中的位置在控制台上輸出。
1 public class Gess { //定義類Examlpe 2 3 public static void main(String[] args) { //主方法 4 5 char word = 'd', word2 = '@'; //定義char型變量 6 7 int p = 23045, p2 = 45213; //定義int型變量 8 9 System.out.println("d在unicode表中的順序位置是:" + (int) word); 10 11 System.out.println("@在unicode表中的順序位置是:" + (int) word2); 12 13 System.out.println("unicode表中的第23045位是:" + (char) p); 14 15 System.out.println("unicode表中的第45213位是:" + (char) p2); 16 17 } 18 19 }
運行結果如圖所示。
(2).轉義字符
轉義字符是一種特殊的字符變量。轉義字符以反斜線“\”開頭,后跟一個或多個字符。轉義字符具有特定的含義,不同於字符原有的意義,故稱“轉義”。例如,printf函數的格式串中用到的“\n”就是一個轉義字符,意思是“回車換行”。Java中轉義字符如表所示。
將轉義字符賦值給字符變量時,與字符常量值一樣需要使用單引號將轉義字符括起來。
例:分別為字符變量c1賦值為'\\'、字符變量c2賦值為'\''、字符變量c3賦值為'\115'、字符變量c4賦值為'\u0052',字符變量c5賦值為'\u2605',然后輸出。
1 char c1='\\'; //為變量c1賦值轉義字符“\\” 2 3 char c2='\''; //為變量c2賦值轉義字符“\'” 4 5 char c3='\115'; //為變量c3賦值轉義字符“\115”表示的字符 6 7 char c4='\u0052'; //為變量c4賦值轉義字符“\u0052”表示的字符 8 9 char c5='\u2605'; //為變量c5賦值轉義字符“\u2605”表示的字符 10 11 System.out.println(c1); //輸出結果為:\ 12 13 System.out.println(c2); //輸出結果為:' 14 15 System.out.println(c3); //輸出結果為:M 16 17 System.out.println(c4); //輸出結果為:R 18 19 System.out.println(c5); //輸出結果為:★
說明:unicode代碼\u0052表示字符R,而unicode代碼\u2605表示字符★。
上面的代碼,在控制台輸出的結果如圖所示。
例 在Java中,對字符變量進行如下的賦值也是合法的:
char char1='B'+1; //將字符常量值'B'與十進制整數1相加的結果賦給字符變量char1 char char2='B'+'1'; //將兩個字符常量值'B'與'1'相加的結果賦給字符變量char2 char char3=24+76; //將兩個十進制整數24與76相加的結果賦給字符變量char3 char char4='n'-32; //該操作將得到大寫的字母N,'N'+32將得到小寫的字母n System.out.println(char1); //輸出結果為:C System.out.println(char2); //輸出結果為:s System.out.println(char3); //輸出結果為:d System.out.println(char4); //輸出結果為:N
上面的代碼,在控制台輸出的結果如圖所示。
例 在輸出語句中使用轉義字符,實例代碼如下:
1 public class Temp { 2 3 public static void main(String[] args) { 4 5 System.out.println("\102"); // 八進制編碼的字符 6 7 System.out.println("\u0042"); // 十六進制編碼的字符 8 9 System.out.println("蘋果\t橘子\t香蕉");// 使用制表符分割 10 11 System.out.println("\\字符是反斜杠"); // 輸出反斜杠 12 13 System.out.println("\n換行字符"); // 輸出回車 14 15 } 16 17 }
實例運行結果如圖所示。
4、布爾類型
布爾類型又稱邏輯類型,只有兩個值true和false,分別代表布爾邏輯中的“真”和“假”,布爾值不能與整數類型進行轉換。布爾類型通常被用在流程控制中作為判斷條件。
例 定義布爾型變量,可通過關鍵字boolean來定義。定義方法如下:
boolean b; //定義布爾型變量b boolean b1,b2; //定義布爾型變量b1,b2
注意:由於布爾型數據只存在true和false數值,所以在為boolean型變量賦值時,除這兩個值外的任何數值都是非法的。
例 分別為布爾型變量married賦值為false,alive賦值為true,然后輸出。
boolean married=false; boolean alive=true; System.out.println("已婚:"+married); //輸出結果為:false System.out.println("生命:"+alive); //輸出結果為:true
在控制台中的運行結果如圖所示 。