java -基礎(chǔ)

[TOC]

1空民、基礎(chǔ)知識

  1. StringBuilder String StringBuffer的區(qū)別橱脸,String為啥不可變

    1. 可變性
      1. String 源碼實現(xiàn)的時候使用了final修飾 private final char value[]
      2. String buffer StringBuilder 都是AbstractStringBuilder類饲鄙,這個類沒有final修飾
    2. 安全性
      1. String對象不可變,常量,安全
      2. StringBuilder對方法加了同步鎖歹垫,對調(diào)用方法加了同步鎖,安全
      3. 沒有加同步鎖颠放,并不安全
    3. 性能
      1. 每次對StringBuilder本身操作排惨,不生成新的對象改變對象引用,所以Builder比Buffer僅僅多獲得了10% 的性能提升碰凶,但是卻有多線程不安全的風(fēng)險
    4. 結(jié)論:
      1. 數(shù)據(jù)少的時候直接String
      2. 數(shù)據(jù)多的時候暮芭,單線程鹿驼,就是Stringbuilder
      3. 多線程,StringBuilder
  2. == 與equal

    1. equal:沒有覆蓋equal()方法的辕宏,等價于==比較這兩個對象
    2. 覆蓋了equals方法的時候畜晰,一般我們都覆蓋這個方法來比較兩個對象內(nèi)容相等
    3. String中的equal重寫過,Object中的方法比較的是內(nèi)存地址瑞筐,String比較的是兩個值
  3. final

    1. final變量:基本數(shù)據(jù)類型凄鼻,初始化之后不能修改,引用類的變量聚假,地址值就不能修改
    2. final類:不能被繼承块蚌,所有的方法都默認(rèn)變成final方法
    3. final方法:方法鎖定,防止任何繼承類修改它魔策,效率匈子,private都隱式的將方法指定成final
  4. finally不會被執(zhí)行的情況

    1. 在finally語句塊中發(fā)生了異常
    2. 前面的代碼中使用了System.exit();
    3. 線程死亡
    4. CPU結(jié)束
  5. 接口和抽象類的區(qū)別

    1. 接口默認(rèn)方法都是pinlic 所有的方法在接口中不能實現(xiàn),java8之后可以有默認(rèn)實現(xiàn)抽象類可以有飛抽象的方法

    2. 接口中的實例變量默認(rèn)都是final類型的闯袒,抽象類不一定

    3. 一個類可以實現(xiàn)多個接口虎敦,但是最多只能實現(xiàn)一個抽象類

    4. 一個類實現(xiàn)接口的話,要實現(xiàn)接口所有的接口政敢,抽象類不一定

    5. 接口不能用new實例化其徙,但是可以申明。

      1. 抽象是類的抽象喷户,一種模板設(shè)計
      2. 接口是行為抽象唾那,一種行為規(guī)范

      jdk8中,接口定義靜態(tài)方法褪尝,接口名調(diào)用闹获。

      如果同時實現(xiàn)了兩個接口,接口中一定要重寫河哑,不然會報錯避诽。

2. Java集合框架

  1. Arraylist 的LinkedList
    1. 是否保證線程安全:ArrayList LinkedList 不同步的,不保證線程安全
    2. 數(shù)據(jù)結(jié)果:Arraylist Object數(shù)組璃谨,LinkedList 雙向鏈表數(shù)據(jù)結(jié)構(gòu)沙庐,1.6之前是循環(huán)鏈表,1.7取消了循環(huán)
    3. 插入和刪除元素:ArrayList 數(shù)組佳吞,增刪時間復(fù)雜度受元素位置的影響拱雏。LinkedList受時間復(fù)雜度都是O(1)
    4. ArrayList支持搞笑隨機(jī)元素訪問,LinkedList不支持
    5. 內(nèi)存占用:list列表結(jié)尾會預(yù)留一定的容量空間底扳,LinkedList每一個元素消耗都多與ArrayList
  2. ArrayList與Vector區(qū)別
    1. Vector是同步的铸抑,兩個線程安全的訪問衣蛾Vector對象,但是一個線程訪問的話衷模,代碼時間可能會比較長鹊汛。
  3. HashMap
    1. 1.8之前:數(shù)組和鏈表結(jié)合在一起 形成鏈表散列
    2. 1.8之后:解決哈希沖突的時候菇爪,當(dāng)鏈表長度大于閾值,就會將鏈表轉(zhuǎn)化為紅黑樹柒昏,減少搜索時間。
  4. HashMap HashTable
    1. x線程安全 熙揍,Map是不安全的职祷,table是安全的。table所有的方法都經(jīng)過synchronized修飾届囚。ConcurrentHashMap線程也是安全的有梆,推薦用這個 ,如果有需求的話
    2. 效率意系,因為線程安全的問題泥耀,HashMap比HashTable效率高。HashTable被淘汰了不要用
    3. 初始大小蛔添,hashMap初始大小默認(rèn)是11痰催,每次擴(kuò)充,容量就是2n+1
  5. HashMap /HashSet
    1. HashSet的底層是HashMap實現(xiàn)的
    2. HashSet 的值存放于HashMap的key中迎瞧,所以不能重復(fù)
  6. ConcurrenthashMap Hashtable
    1. 數(shù)據(jù)結(jié)構(gòu):
      1. ConcurtenthashMap 1.7以前分段數(shù)組+鏈表 實現(xiàn)夸溶,1.8數(shù)據(jù)結(jié)構(gòu)和hashMap1,8一樣,數(shù)組+紅黑
      2. table he 1.8以前的hashMap的底層數(shù)據(jù)結(jié)構(gòu)類似凶硅,都是采用數(shù)組+鏈表的形式缝裁。數(shù)組是HashMap的主體,鏈表是為了解決沖突存在的
    2. 線程安全:
      1. 1.7之前ConcurrentHashMap對整個數(shù)組進(jìn)行了分割分段足绅,沒一把鎖只鎖容器的一部分捷绑,多線程訪問不同的容器,就不會競爭氢妈,提高效率
      2. 1.8之后直接采用Node+鏈表+紅黑樹的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)粹污。
      3. Hashtable 使用synchronized保證線程安全,功效底下允懂。競爭可能會越來越大
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末厕怜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蕾总,更是在濱河造成了極大的恐慌粥航,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件生百,死亡現(xiàn)場離奇詭異递雀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蚀浆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門缀程,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搜吧,“玉大人,你說我怎么就攤上這事杨凑÷四危” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵撩满,是天一觀的道長蜒程。 經(jīng)常有香客問我,道長伺帘,這世上最難降的妖魔是什么昭躺? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮伪嫁,結(jié)果婚禮上领炫,老公的妹妹穿的比我還像新娘。我一直安慰自己张咳,他們只是感情好帝洪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脚猾,像睡著了一般碟狞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上婚陪,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天族沃,我揣著相機(jī)與錄音,去河邊找鬼泌参。 笑死脆淹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沽一。 我是一名探鬼主播盖溺,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铣缠!你這毒婦竟也來了烘嘱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蝗蛙,失蹤者是張志新(化名)和其女友劉穎蝇庭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捡硅,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哮内,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了壮韭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片北发。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡纹因,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出琳拨,到底是詐尸還是另有隱情瞭恰,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布狱庇,位于F島的核電站寄疏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏僵井。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一驳棱、第九天 我趴在偏房一處隱蔽的房頂上張望批什。 院中可真熱鬧,春花似錦社搅、人聲如沸驻债。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽合呐。三九已至,卻和暖如春笙以,著一層夾襖步出監(jiān)牢的瞬間淌实,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工猖腕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拆祈,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓倘感,卻偏偏與公主長得像放坏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子老玛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • java基礎(chǔ) 集合承繼包含圖 Collection vs Collections 首先淤年,"Collection" ...
    onlyHalfSoul閱讀 1,318評論 0 5
  • 由于時間倉促,有些地方未寫完,后面會繼續(xù)補(bǔ)充.如有不妥之處,歡迎及時與我溝通. 如果你也是在學(xué)習(xí)java,給你們推...
    分不清java閱讀 2,832評論 0 15
  • 相關(guān)概念 面向?qū)ο蟮娜齻€特征 封裝,繼承,多態(tài).這個應(yīng)該是人人皆知.有時候也會加上抽象. 多態(tài)的好處 允許不同類對...
    東經(jīng)315度閱讀 1,942評論 0 8
  • 九種基本數(shù)據(jù)類型的大小,以及他們的封裝類蜡豹。(1)九種基本數(shù)據(jù)類型和封裝類 (2)自動裝箱和自動拆箱 什么是自動裝箱...
    關(guān)瑋琳linSir閱讀 1,887評論 0 47
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等麸粮,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,497評論 0 3