開始學習java了!其實在寫這篇文檔之前的一兩個月前就已經看了一小部分的java語言了,當時是一個朋友勸說下學習的,在本本的vista下面掛了個eclipse,然後就開始了,不過沒有幾天,vista系統因為各種原因,被我格式化了xp系統,一直也沒有記錄下來學習java的一些基本內容,今天稍微整理一下:
java語言派生自c++語言,自然有許多地方與C++語言是類似的,最大的區別在於記憶體的管理,java內部的記憶體管理可以先不去理解,儘管thinking in java中有所介紹,不用手工管理記憶體使得編寫程式更加安全一些。用new後,不需要顯示調用delete方法(事實上也不存在)
java的操作符與C++基本一致,有差別的是<<<符號,無符號左移,是在看《編程藝術》一書時看到該符號的,同時也看到它的需求非常實際。
java沒有C++的operator運算子多載,因此java內部要重載,只能夠通過類方法,不知道java內部是否通過類似C++的虛函數實現每一個函數,我記得c#好像是那麼實現的。
java中方法內變數必須要在定義的時候就初始化,否則編譯器將會報出錯誤,在類成員中的變數,java會自動給你初始化一個預設值,一般為0,null,false。
java中的所有方式都是通過類來實現,因此java中需要一個全域訪問時需要通過靜態變數來實現,java的靜態變數實現與C++有所差別。java中存在static語句塊,如:
static
{
static object o = new object();
}
static的初始化是在第一次調用的時候,依據聲明的順序進行初始化的。
java中的建構函式可以通過this來調用自身的另外一個建構函式,但只能調用一次,且放置在建構函式中的第一條語句中。
java中沒有顯示的解構函式,可以存在finalize方法,在垃圾收集器運行收集系統記憶體的時候,會被調用,但不如C++的delete語句那麼可靠!
java通過包方法來區別各個類,C++通過namespace來給類劃分名字空間,java通過package來區分,package的尋找位置一般通過JAVA_CLASSPATH來搜尋,一般JAVA_CLASSPATH的第一個值為'.',表示當前路徑。與C++中的namespace有些類似,但package是基於文檔的路徑來實現的,namespace是基於邏輯所在地區來實現的。
java中每個package的尾碼名為java,只能匯出一個public類,其他類都是預設聲明,即protected,對本package內部是可見的,對其他package是不可見的,非常類似C++語言總的static聲明的函數。
java中的修飾符為public、private,protected是預設的修飾符,每一個類,變數,方法都需要顯示表明public,private修飾符,與C++的不同,C++是起始申明開始到下一個聲明開始為止,都為同一個宣告類型。
java中的所有類都從object中繼承下來的。每個類均由預設的功能,最簡單的莫過於hashCode方法以及toString方法。
java中有一個命名規範,即將所有的類以Title方式命名,類成員以及方法用駱駝法(camel)命名。