s1 是一個類類型變量话浇,“abc”是一個對象 。
字符串最大特點:一旦被初始化就不可以被改變
StringBuffer 是一個容器
1.而且長度是可變的
2.可以字節(jié)操作多個數(shù)據(jù)類型
3.最終會通過tostring方法變成字符串
JDK1.5之后 出現(xiàn)了string builder
StringBuffer是線程同步的
StringBuilder 是線程不同步的
集合 Collection
collection
List :元素是有序的替裆,元素可以重復,因為該集合體系有索引。
ArrayList:底層的數(shù)據(jù)結(jié)構(gòu)使用的是數(shù)組結(jié)構(gòu)翠订。特點:查詢速度快腰根,但是增刪稍慢激才,線程步同步
LinkedList:底層的使用的是鏈表結(jié)構(gòu)。特點:增刪速度很快额嘿,查詢稍慢瘸恼,線程不同步
Vector:底層是數(shù)組數(shù)據(jù)結(jié)構(gòu)。線程同步册养。被ArrayList替代 因為效率低
Set:元素是無序的(存入和取出的順序不一定一致)东帅,元素不可重復
Set集合的功能和Collection是一致的
常見的子類
HashSet:底層數(shù)據(jù)結(jié)構(gòu)是哈希表 線程是非同步的
HashSet是如何保證元素唯一性的呢?
通過元素的兩個方法球拦,hashCode和equals來完成
如果元素的HashCode值相同靠闭,才會判斷equals是否為True
如果元素的HashCode值不同,不會調(diào)用equals
注意:對于判斷元素是否存在坎炼,以及刪除等操作阎毅,依賴的方法是hashCode和equals
TreeSet:可以對Set集合中的元素進行排序。compare to 進行排序
記住排序時當主要條件相同時点弯,一定要比較次要條件
底層是2叉樹 保證元素唯一性的依據(jù):compareto? ? 刪除 增加 都要在compareto中判斷
TreeSet的第二種排序方式扇调。
當元素自身不具備比較性,或者具備的比較性不是所需要的
這時需要讓集合自身具備比較性(在集合初始化時抢肛,就具備比較方式)借助構(gòu)造函數(shù) new TreeSet(CompareInter)
泛型
泛型格式 :通過<>來定義要操作的引用數(shù)據(jù)類型
在使用java提供的對象時狼钮,什么時候?qū)懛盒湍兀?/p>
通常在集合框架中很常見
只要見到<>就要定義泛型
當使用集合時,將集合中要存儲的數(shù)據(jù)類型作為參數(shù)傳遞到<>即可
泛型類定義的泛型在整個類中有效捡絮,如果被方法使用
那么泛型類的對象明確要操作的具體類型后熬芜,所有要操作的類型就已經(jīng)固定了
為了讓不同方法可以操作不同類型,而且類型還不確定
那么可以將泛型定義在方法上