Java是建立在C++之上的更為“純粹”的物件導向的語言,Java中一切都是對象。
C或C++是通過指標間接的操控對象,而Java是通過reference操控對象。Java中除了primitive(原始)類型以外,所有類型的對象須程式建立。為了效率,primitive類型的對象可不用new來建立,而且建立的是一個“非reference”的“自動”變數,這個變數儲存的值儲存在棧中,所以效率更高。Primitive類型包括boolean(t/f),char(16bit,unicode),byte(8bit),short(16bit),int(32bit),long(64bit),float(32bit),double(64bit)和void;另外還有兩個比較特殊的BigInteger和BigDecimal。在Java中建立數組,實際上是在建立reference的數組,這些reference會自動被初始化為一個null,所以在使用reference以前,必須用對象進行賦值。
Java中資料可以儲存到六個地方:1.寄存器(registers):速度最快,由編譯器分配;2.棧(stack):位於“常規記憶體區”,處理器可以通過棧指標直接存取,棧指標下移建立新空間,Java一般把對象的reference放在棧裡,但對象沒有放在這裡;3.堆(heap):是一段“多用途的記憶體池”,所有Java對象都儲存在這裡。同棧不同,堆的優點是分配空間時,編譯器無需知道該分配多少空間,或者這些資料會在堆裡呆多長時間,因為使用堆比較靈活,直接用new就行了;4.靜態儲存(static storage):還是存放在RAM中,整個程式運行期間都可以訪問,可以用static申明;5.固定儲存(constant storage):常量值通常直接放在程式裡,這樣就更安全;6.非記憶體的儲存(Non-RAM storage):完全獨立於程式,主要有“流對象”和“persistent對象(儲存在磁碟上)”。
範圍:eg:{ String s = new String (“a string”); },S這個reference會在範圍結束之後消失,但是S所指的那個String仍然還佔著記憶體。Java的記憶體回收行程會自動回收由new建立的且已經沒有reference所指的對象。
構建Java程式:namespace一般用網域名稱來避免重複,net.yanhuohy;用import匯入其他包中的類,只有java.lang是被預設import進去的;static資料和方法在沒有被連到類的任何一個執行個體之上,也可以直接存取。
注釋可以採用/** .. */,這樣可以用Javadoc提取,也可以嵌入HTML命令,詳細參照javadoc的文法。
編程風格:第一個字母大寫來表示一個類的名稱,第一個字母小寫來表示其他的如方法,資料成員,變數等;對所有都一樣的是,如果一個名稱裡面有多個單詞,不要用下滑線,直接連接在一起,但後面的單詞首字母都採用大寫。