java面試知識點(一)

String 句喷、StringBuffer、StringBuilder的區(qū)別

String 字符串常量

StringBuffer字符串變量(線程安全的可變字符序列)

StringBuilder字符串變量(非線程安全)

String 是不可變的對象, 因此在每次對 String 類型進行改變的時候其實都等同于生成了一個新的 String 對象兔毙,然后將指針指向新的 String 對象

每次結(jié)果都會對StringBuffer對象本身進行操作唾琼,而不是生成新的對象,再改變對象引用澎剥。

StirngBuffer和StringBuilder都是一個類似于 String 的字符串緩沖區(qū)锡溯,只要字符緩沖區(qū)包含的字符串沒有超過容量,就無需分配新的內(nèi)部緩沖數(shù)組哑姚,如果溢出祭饭,則容量會自動增大。但是StringBuilder通常情況下會更快叙量,因為他不執(zhí)行同步倡蝙,

java的九種基本類型以及他們的封裝類

java提供了一組基本數(shù)據(jù)類型,包括

boolean, byte, char, short,? int, long, float, double, void.

同時绞佩,java也提供了這些類型的封裝類寺鸥,分別為

Boolean, Byte, Character, Short, Integer, Long, Float, Double, Void

在java中使用基本類型來存儲語言支持的基本數(shù)據(jù)類型,這里沒有采用對象品山,而是使用了傳統(tǒng)的面向過程語言所采用的基本類在型胆建,主要是從性能方面來考慮的:因為即使最簡單的數(shù)學(xué)計算,使用對象來處理也會引起一些開銷谆奥,而這些開銷對于數(shù)學(xué)計算本來是毫無必要的眼坏。但是在java中拂玻,泛型類包括預(yù)定義的集合酸些,使用的參數(shù)都是對象類型,無法直接使用這些基本數(shù)據(jù)類型檐蚜,所以java又提供了這些基本類型的包裝器魄懂。

基本數(shù)據(jù)類型只能按值傳遞,而封裝類按引用傳遞闯第。

基本類型在堆棧中創(chuàng)建市栗;而對于對象類型,對象在堆中創(chuàng)建咳短,對象的引用在堆棧中創(chuàng)建填帽。基本類型由于在堆棧中咙好,效率會比較高篡腌,但是可能會存在內(nèi)存泄漏的問題。

Switch能否用string做參數(shù)勾效?

到目前為止switch支持這樣幾種數(shù)據(jù)類型:byte short int char String

在java7中才開始支持String嘹悼,所以java7以前是不支持的叛甫。

那么這兒就出現(xiàn)一個問題,在Switch中杨伙,判斷兩個String是否相等是值相等還是引用相等其监?

其實swich只支持一種數(shù)據(jù)類型,那就是整型限匣,其他數(shù)據(jù)類型都是轉(zhuǎn)換成整型之后在使用switch的抖苦。

而char類型的比較就是在比較他們的ascii碼,而String的比較就是在比較他們的hashcode和equals是否相等米死。

而hashcode是根據(jù)String類型的值是否一樣睛约,但是也有可能hashcode碰撞,所以在加一層equals哲身。(為什么要這么做辩涝,因為獲取他的hashcode快,所以只有當相同時再判斷equal會提高效率)勘天。

equals和== 的區(qū)別:

當他們用(==)進行比較的時候怔揩,比較的是他們在內(nèi)存中的存放地址,所以脯丝,除非是同一個new出來的對象商膊,他們的比較后的結(jié)果為true,否則比較后結(jié)果為false宠进。 JAVA當中所有的類都是繼承于Object這個基類的晕拆,在Object中的基類中定義了一個equals的方法,這個方法的初始行為是比較對象的內(nèi)存地 址材蹬,但在一些類庫當中這個方法被覆蓋掉了实幕,如String,Integer,Date在這些類當中equals有其自身的實現(xiàn),而不再是比較類在堆內(nèi)存中的存放地址了堤器。

Object有哪些公用方法昆庇?

1.clone方法

保護方法,實現(xiàn)對象的淺復(fù)制闸溃,只有實現(xiàn)了Cloneable接口才可以調(diào)用該方法整吆,否則拋出CloneNotSupportedException異常。

主要是JAVA里除了8種基本類型傳參數(shù)是值傳遞辉川,其他的類對象傳參數(shù)都是引用傳遞表蝙,我們有時候不希望在方法里講參數(shù)改變,這是就需要在類中復(fù)寫clone方法乓旗。

2.getClass方法

final方法府蛇,獲得運行時類型。

3.toString方法

該方法用得比較多寸齐,一般子類都有覆蓋欲诺。

4.finalize方法

該方法用于釋放資源抄谐。因為無法確定該方法什么時候被調(diào)用,很少使用扰法。

5.equals方法

該方法是非常重要的一個方法蛹含。一般equals和==是不一樣的,但是在Object中兩者是一樣的塞颁。子類一般都要重寫這個方法浦箱。

6.hashCode方法

該方法用于哈希查找,可以減少在查找中使用equals的次數(shù)祠锣,重寫了equals方法一般都要重寫hashCode方法酷窥。這個方法在一些具有哈希功能的Collection中用到。

一般必須滿足obj1.equals(obj2)==true伴网∨钔疲可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就滿足equals澡腾。不過為了提高效率沸伏,應(yīng)該盡量使上面兩個條件接近等價。

如果不重寫hashcode(),在HashSet中添加兩個equals的對象动分,會將兩個對象都加入進去毅糟。

7.wait方法

wait方法就是使當前線程等待該對象的鎖,當前線程必須是該對象的擁有者澜公,也就是具有該對象的鎖姆另。wait()方法一直等待,直到獲得鎖或者被中斷坟乾。wait(long timeout)設(shè)定一個超時間隔迹辐,如果在規(guī)定時間內(nèi)沒有獲得鎖就返回。

調(diào)用該方法后當前線程進入睡眠狀態(tài)糊渊,直到以下事件發(fā)生右核。

(1)其他線程調(diào)用了該對象的notify方法。

(2)其他線程調(diào)用了該對象的notifyAll方法渺绒。

(3)其他線程調(diào)用了interrupt中斷該線程。

(4)時間間隔到了菱鸥。

此時該線程就可以被調(diào)度了宗兼,如果是被中斷的話就拋出一個InterruptedException異常。

8.notify方法

該方法喚醒在該對象上等待的某個線程氮采。

9.notifyAll方法

該方法喚醒在該對象上等待的所有線程殷绍。

hashcode 的作用 :

hashode 主要是用于查找的,而equals是用于比較兩個對象是否相等鹊漠。(在switch中用String做參數(shù)主到,會看到他們兩個的配合使用)茶行。

public native int hashCode();它是一個本地方法,它的實現(xiàn)與本地機器有關(guān)登钥,這里我們暫且認為他返回的是對象存儲的物理位置(實際上不是畔师,這里寫是便于理解)。

Java的四種引用牧牢,強弱軟虛看锉,用到的場景:

強引用:如“Object obj = new Object()”,這類引用是 Java 程序中最普遍的塔鳍。只要強引用還存在伯铣,垃圾收集器就永遠不會回收掉被引用的對象。

軟引用:它用來描述一些可能還有用轮纫,但并非必須的對象腔寡。在系統(tǒng)內(nèi)存不夠用時,這類引用關(guān)聯(lián)的對象將被垃圾收集器回收掌唾。JDK1.2 之后提供了 SoftReference 類來實現(xiàn)軟引用

弱引用:它也是用來描述非需對象的蹬蚁,但它的強度比軟引用更弱些,被弱引用關(guān)聯(lián)的對象只能生存到下一次垃圾收集發(fā)生之前郑兴。當垃圾收集器工作時犀斋,無論當前內(nèi)存是否足夠,都會回收掉只被弱引用關(guān)聯(lián)的對象情连。在 JDK1.2 之后叽粹,提供了 WeakReference 類來實現(xiàn)弱引用。

虛引用:最弱的一種引用關(guān)系却舀,完全不會對其生存時間構(gòu)成影響虫几,也無法通過虛引用來取得一個對象實例。為一個對象設(shè)置虛引用關(guān)聯(lián)的唯一目的是希望能在這個對象被收集器回收時收到一個系統(tǒng)通知挽拔。JDK1.2 之后提供了 PhantomReference 類來實現(xiàn)虛引用辆脸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市螃诅,隨后出現(xiàn)的幾起案子啡氢,更是在濱河造成了極大的恐慌,老刑警劉巖术裸,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倘是,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門粗卜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旗芬,“玉大人瘤睹,你說我怎么就攤上這事升敲。” “怎么了轰传?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵驴党,是天一觀的道長。 經(jīng)常有香客問我绸吸,道長鼻弧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任锦茁,我火速辦了婚禮攘轩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘码俩。我一直安慰自己度帮,他們只是感情好,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布稿存。 她就那樣靜靜地躺著笨篷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瓣履。 梳的紋絲不亂的頭發(fā)上率翅,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音袖迎,去河邊找鬼冕臭。 笑死,一個胖子當著我的面吹牛燕锥,可吹牛的內(nèi)容都是我干的辜贵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼归形,長吁一口氣:“原來是場噩夢啊……” “哼托慨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起暇榴,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤厚棵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后跺撼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窟感,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年歉井,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哈误。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡哩至,死狀恐怖躏嚎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情菩貌,我是刑警寧澤卢佣,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站箭阶,受9級特大地震影響虚茶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仇参,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一嘹叫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诈乒,春花似錦罩扇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肠鲫,卻和暖如春员帮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背导饲。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工捞高, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人帜消。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓棠枉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泡挺。 傳聞我的和親對象是個殘疾皇子辈讶,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法娄猫,內(nèi)部類的語法贱除,繼承相關(guān)的語法,異常的語法媳溺,線程的語...
    子非魚_t_閱讀 31,664評論 18 399
  • Java8張圖 11月幌、字符串不變性 12、equals()方法悬蔽、hashCode()方法的區(qū)別 13扯躺、...
    Miley_MOJIE閱讀 3,709評論 0 11
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,114評論 0 62
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司录语,掛了不少倍啥,但最終還是拿到小米、百度澎埠、阿里虽缕、京東、新浪蒲稳、CVTE氮趋、樂視家的研發(fā)崗...
    時芥藍閱讀 42,277評論 11 349
  • 張倩看二人鎖好車,她掐滅了香煙江耀,過濾嘴上的心形被按了出來剩胁!張倩準備設(shè)宴,款待這二位有功之臣决记!剛才窗前的沉思摧冀,梳理。...
    雨射零丁閱讀 305評論 2 2