標籤:知識 遞迴 可變參數 儲存 而且 java項目 沒有 字串池 可見
工作一段時間發現Java的基本知識不是一般的重要,基本知識好項目理解快。特此看java的基本知識書本《Java項目實戰開發》李興華版,看完此書準備再看一下java更深一點的書——《Java核心技術 卷1》、《Java核心技術 卷2》。
總結如下:
一 概念
1、Java資料類型分類
2、String、true、false、null不是Java的關鍵字,關鍵字也叫保留字。
3、Java使用的是Unicode字元碼系統。
4、任何資料類型遇到String類型的變數或常量之後都會向String類型轉換。
5、資料屬於引用資料類型,數組在聲明後數組名再棧中儲存,通過new關鍵字執行個體化要在堆中
分配數組所需的記憶體,並將堆記憶體的操作地址給了數組名。將堆記憶體的使用權交給了對應的棧記憶體空間,
而且一個堆記憶體空間首地址的使用權可以交給多個棧記憶體空間指向。
5、棧中存放的是堆記憶體的地址。
6、數組、類、介面都屬於引用資料類型,所以變數名,變數的內容儲存相似。
7、像數組這樣屬於參考型別,把數組作為參數傳遞給方法後,如果在方法中對數組進行了修改,
修改後的結果將儲存下來,主方法中的數組也將改變(String類是個例外後面講)。
8、遞迴處理不當,比如遞迴的次數過多,可能出現記憶體溢出。
9、foreach輸出 for(資料類型 變數名 :數組名)。
10、可變參數 方法名(資料類型...參數名),參數是以數組(數組名為參數名)的形式儲存。
二 物件導向
11、封裝就是為了對於外部不可見,屬性不讓外部直接操作,有時候賦值前需要判斷其合理性。
對於私人變數的封裝使用setter和getter還有一個目的,在Java的反射機制中利於setter和getter設定和取得屬性內容。
12、匿名對象就是沒有明確給出名字的對象,一般只使用一次,沒有棧記憶體,只有堆記憶體。
一般作為其他類執行個體化對象的參數傳遞。eg:new Person("李四",30);
13、一個字串就是一個String類的匿名對象,在直接賦值(不通過new關鍵字)的字串中:
如果一個字串已經被一個名稱所引用,則以後再使用相同的該字串時,不在重新開闢新堆空間,
雖然變數名稱不同,但名稱的棧空間的存放的堆地址相同,即指向同一個堆地址。
對於String的以上操作,在Java中稱之為共用設計。在java中提供一個字串池來儲存所有已經聲明過的
字串,每當執行個體化一個String對象時,先看一下字串池中是否存在,若存在指向相同的堆地址,若不存在
開闢新的堆空間。
而通過new String(“內容”)的對象,無論內容是否存在,都會開闢新的堆空間。
Java被忽略的基本知識(一)