標籤:分享圖片 排序 nbsp col 而且 異常 bool 實體 黃色
Java有哪些資料存放區方式?
- 基礎資料型別 (Elementary Data Type)(1byte3整2小1字元1布爾)分別是byte,short,int long,flort,double,char,boolean
- String
- 自訂封裝類(PO,VO等實體類)
- 數組,儲存一組資料,可以是基礎資料型別 (Elementary Data Type),也可以是引用資料類型,但只能是同一類型,並且大小一定
- 集合類,作用與數組類似,也可以儲存一組資料,也稱作容器類
為什麼出現集合類?集合類與數組的區別是什嗎?
數組的特點:
- 一個數組只能儲存同一種資料類型的資料
- 數組長度不可變,定義數組時必須定義長度
- 數組的儲存方式只有一種,需要通過遊標定位,遊標從0開始,不能存取範圍外的遊標
集合類的特點:
- 一個集合類可以儲存多種資料類型的資料(對象一旦被放入集合類中,集合類都會把它當作是Object類型處理,這也是集合類可以儲存多種資料類型的資料的原因)
- 集合類的長度可變
- 每種集合類的儲存方式各不相同,可根據實際情況選用適當的集合類
- 集合類提供了一些排序、比較等方法,方便我們使用
JAVA體系中的集合類有什嗎?
我們可以得到什麼資訊呢?該圖說明,紅色的是常用的集合實作類別,主要是分為2個介面Collection Map,分類的依據是2者的儲存方式不同
- Collection是孤立元素的對象集合,一次存一個元素,屬於單列集合
- Map是成對元素的對象集合(“鍵—值”對),一次存一對元素,屬於雙列集合
什麼是泛型?
我們對集合類進行編譯時間,編譯器會出現警告(黃色驚嘆號),集合類之所以可以儲存不同類型的資料,是因為對象一旦被放進集合後,集合類都會把它當作是Object類型處 理。這樣做會帶來兩個問題:
- 每次取出集合元素,都要進行強制類型轉換,不僅代碼臃腫,而且增加了編程的複雜度
- 集合對元素類型沒有任何限制,假如只想建立一個Dog對象的集合,但是程式可以輕易把一個Cat對象放入集合中,那在取出集合元素時,如果將一個Cat類型的對象強制轉換為Dog類型,就會引起ClassCastException異常
泛型如何解決問題?
定義了泛型之後,容器中就只能存放對應泛型的資料類型。
使得集合類記住集合元素的資料類型,保證程式在編譯時間沒有警告,運行時沒有ClassCastException異常。
JAVA集合類(上)