String和Vector源碼的總結(jié)

關(guān)于String的源碼的總結(jié):

  1. String對(duì)象是不可變類型,返回類型為String的String方法每次返回的都是新的String對(duì)象,除了某些方法的某些特定條件返回自身。

  2. String對(duì)象的三種比較方式:

  • ==內(nèi)存比較:直接對(duì)比兩個(gè)引用所指向的內(nèi)存值,精確簡(jiǎn)潔直接明了。

  • equals字符串值比較:比較兩個(gè)引用所指對(duì)象字面值是否相等。

  • hashCode字符串?dāng)?shù)值化比較:將字符串?dāng)?shù)值化。兩個(gè)引用的hashCode相同,不保證內(nèi)存一定相同,不保證字面值一定相同。

關(guān)于Vector的源碼,給出幾點(diǎn)比較重要的總結(jié):

1、Vector是內(nèi)部是以動(dòng)態(tài)數(shù)組的形式來(lái)存儲(chǔ)數(shù)據(jù)的。Vector有四個(gè)不同的構(gòu)造方法。無(wú)參構(gòu)造方法的容量為默認(rèn)值10,僅包含容量的構(gòu)造方法則將容量增長(zhǎng)量(從源碼中可以看出容量增長(zhǎng)量的作用,第二點(diǎn)也會(huì)對(duì)容量增長(zhǎng)量詳細(xì)說(shuō))明置為0。

2、Vector具有數(shù)組所具有的特性、通過(guò)索引支持隨機(jī)訪問(wèn)、所以通過(guò)隨機(jī)訪問(wèn)Vector中的元素效率非常高、但是執(zhí)行插入、刪除時(shí)效率比較地下、具體原因后面有分析。注意擴(kuò)充容量的方法ensureCapacityHelper。與ArrayList相同,Vector在每次增加元素(可能是1個(gè),也可能是一組)時(shí),都要調(diào)用該方法來(lái)確保足夠的容量。當(dāng)容量不足以容納當(dāng)前的元素個(gè)數(shù)時(shí),就先看構(gòu)造方法中傳入的容量增長(zhǎng)量參數(shù)CapacityIncrement是否為0,如果不為0,就設(shè)置新的容量為就容量加上容量增長(zhǎng)量,如果為0,就設(shè)置新的容量為舊的容量的2倍,如果設(shè)置后的新容量還不夠,則直接新容量設(shè)置為傳入的參數(shù)(也就是所需的容量),而后同樣用Arrays.copyof()方法將元素拷貝到新的數(shù)組。

3、Vector實(shí)現(xiàn)了AbstractList抽象類、List接口、所以其更具有了AbstractList和List的功能、前面我們知道AbstractList內(nèi)部已經(jīng)實(shí)現(xiàn)了獲取Iterator和ListIterator的方法、所以Vector只需關(guān)心對(duì)數(shù)組操作的方法的實(shí)現(xiàn)、

4、Vector實(shí)現(xiàn)了RandomAccess接口、此接口只有聲明、沒(méi)有方法體、表示Vector支持隨機(jī)訪問(wèn)。

5、Vector實(shí)現(xiàn)了Cloneable接口、此接口只有聲明、沒(méi)有方法體、表示Vector支持克隆。

6、Vector實(shí)現(xiàn)了Serializable接口、此接口只有聲明、沒(méi)有方法體、表示Vector支持序列化、即可以將Vector以流的形式通過(guò)ObjectOutputStream來(lái)寫(xiě)入到流中。

7、Vector是線程安全的。很多方法都加入了synchronized同步語(yǔ)句,來(lái)保證線程安全。同樣在查找給定元素索引值等的方法中,源碼都將該元素的值分為null和不為null兩種情況處理,Vector中也允許元素為null。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,897評(píng)論 18 399
  • Collection接口 Collection接口是所有集合的祖先類。他有兩個(gè)構(gòu)造方法,一個(gè)無(wú)參構(gòu)造,一個(gè)是帶Co...
    夜幕繁華閱讀 690評(píng)論 0 0
  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對(duì)于byte類型而言...
    龍貓小爺閱讀 4,477評(píng)論 0 16
  • java筆記第一天 == 和 equals ==比較的比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量...
    jmychou閱讀 1,661評(píng)論 0 3
  • 一 晚上9點(diǎn)多,我正在為兒子的洗澡做準(zhǔn)備,微信提示音顯示有消息進(jìn)來(lái)...
    怪物來(lái)了閱讀 1,003評(píng)論 0 0

友情鏈接更多精彩內(nèi)容