Java遊戲程式設計讀書筆記(轉)

ba發表於2007-08-17
Java遊戲程式設計讀書筆記(轉)[@more@]第2章 預備:學習Java 2 API
Java程式的結構
基本Java資料型別,包括String和陣列
數值和條件運算子,以及它們的優先運算順序
條件語句,包括控制語句和迴圈語句
使用throws語句和try-catch的異常處理
2.1 Game Over!程式
2.1.1 import語句
Java物件被組織到包中。為了方便組織,包中包括了相關的類。Java API包含75個包(總共大約2000個類,JDK 1.4.0)
C++註解:Java中的import關鍵字與C++中的#include指示相似,僅有的不同是java中標頭檔案和原始檔之間沒有差別。對類的宣告和實現都包含在一個.java檔案中。
2.1.2 給Java程式碼加註釋
在工作中一定要寫註釋,但是也要避免過度的註釋,過度的註釋只能使程式碼混亂並在很大程度上干擾注意力。
注意C風格註釋不要巢狀。第一個“*/”會使最近的“/*”失去作用。
2.1.3 Java類宣告
2.1.4 Java方法宣告
C++註解:Java中的main方法與控制檯C或C++應用程式中的典型main函式相似。注意在Java中,它必須在一個類中定義,而在C和C++中必須全域性定義。此外,Java中的main方法總是返回void,與C或C++的main函式不同,它們可以有多個返回型別。
2.1.5 Java中的程式碼塊
2.1.6 Java程式組成部分的關鍵點回顧
 使用import語句使編譯器知道要用的庫
 註釋能在很多方面幫助程式設計師,但是不正確使用它會弊大於利
 用Java寫的一切都被封裝成類,即使程式的開始點即main方法也不例外
 一個程式碼塊是完成一個特定任務相關的語句。程式碼塊保持程式的結構化並且容易讀寫
2.2 位元和位元組:原始的Java型別
程式中應寫些什麼呢?答案是:資料,程式沒有資料就不能生存,尤其是遊戲。
Java是面嚮物件語言。但是,Java不是百分百的物件導向,因為Java支援8種原始型別。
2.2.1 基本的整數型別
通常而言,對於遊戲開發,一般會使用int型表示整數資料,而忽略long,short和byte型。因為int型的取值範圍大於40億,通常使用它比較安全。
2.2.2 浮點型別
一個常量浮點值要能被真正看作float,它必須以f(或F)字尾結束;否則,會被當作double值。對於double值來說,d(或D)字尾是可選的。
至今,通常使用哪種型別來儲存浮點數還沒有定論。雙精度在本質上給了我們相對於浮點數兩倍的精度,但是,這是有代價的——通常是記憶體的消耗。Java API中大部分的方法返回型別和資料成員時使用double型。
2.2.3 Char型別
Java中一個字元(char)表示Unicode字符集中的一個元素。Unicode字元由16位組成,因此,有216(65535)個不同的字元可用,這與C++的標準128個ASCII字元大不相同。Unicode字符集給了我們很大的靈活性,它能包含所有不同語言的字元,以及數學、科學、文字中的常用符號。
字元由單引號括起來的單個字元表達,通常用16進製表示,範圍從’u0000’到’uFFFF’(u告訴編譯器你在用兩個位元組[16位]字元資訊表示一個Unicode字元)。
C++註解:注意,與C++不同,Java中一個字元陣列沒有必要組成一個字串。稍後將會看到,Java API定義了自己的String型別。一般只有敏感資訊,如密碼欄位,才會作為字元陣列處理。這是因為,Java物件在沒有被Java虛擬機器作為不被引用的物件清空之前一直駐留在記憶體中。如果有精明的駭客潛進系統,則把敏感資料留在記憶體中可能會造成危險的局面。
想得到更多的關於Unicode字符集的資訊,以及字元的完整列表,可以到網站上檢視。
2.2.4 布林型
Java中,任何一個boolean變數只有兩個有效值:true和false。boolean型沒有等價的數值賦值,也不允許型別轉換。還有,注意所有的if和while宣告都相當於一個boolean結果。
2.2.5 String型別
Java中的String型別並不是原始型別!它實際上是一個Java類。
複製陣列:
如果需要將一個陣列中的值複製給另一個陣列,可以使用System類中預定義的arrayCopy方法。
System.arrayCopy(Object src,int src_position,Object dst,int dst_position,int length);
其中,src指的是從中複製的源陣列,src_position指源陣列的開始下標,dst指的是複製的目的陣列,dst_option指的是目的陣列的開始下標,length指定複製的陣列元素的個數。
多維陣列:
陣列可以使問題變數很簡單,但如果使用不恰當則會使問題變得異常複雜。如果在是否使用陣列來解決某個問題上不確定,下面的提示可能會有一些幫助:
 在紙上簡寫出要解決問題。如果資料不能以行和列的方式組織,那麼使用陣列可能不是最好的解決方法。
 在寫自己的陣列工具,如排序和查詢演算法之前,檢視一下Java API。通常從Java.util.Arrays包開始檢視比較好。無疑Java包會節約你的時間,而且要寫出比API中提供的演算法更有效的程式碼是很難的。
 雖然可以把陣列定義為三、四、五或更多維,但是用這些取代二維陣列後,事情會變得很複雜。如果你需要使用超過三維的陣列,試著檢測能否設計或找到另外一種資料結構來使用,比如樹,這很可能會更簡潔有效地解決問題。
2.2.6 強制轉換變數型別
C++註解:與C++不同,Java boolean型別沒有等價的數值賦值。因此沒有可以直接地把一個boolean轉換為int變數的方法。把boolean值轉換到另外一種型別最快方式可能如下所示:
boolean gameStarted=true;
int game=gameStarted?1:0;
雖然這裡沒有強轉,但是一行程式碼也可以實現轉換。
最後,關於變數還有需要注意的地方。在Java中,沒有typedef運算子,也沒有與#define預編譯指令等價的操作。雖然這可能要花費一些時間來適應,但是它會幫助排除錯誤並且使程式碼更清晰。因此,對於那些喜歡寫很多“神秘”程式碼的人,再也不能定義一個如fa26b9這樣的變數型別了。
2.2.7 Java資料型別、陣列和識別符號需要記憶的要點
 Java中的8種原始資料型別byte,short,int,long,float,double,boolean和char本身不是Java類,但它們是類中不可缺少的部分。
 Java中的陣列可以與C和C++中大致一樣地編寫,但是Java的實現提供了訪問陣列元素總數的一個附加長屬性。
 強制轉換是把變數從一種型別轉換為另外一種型別的好方法,但是要小心這種方法中潛在的副作用。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-963581/,如需轉載,請註明出處,否則將追究法律責任。

相關文章