Java面試寶典 1.13~1.31【2020.5 Beta版】

Java面試寶典 1.13~1.31【2020.5 Beta版】

<a name="14cb060b"></a>

1.Java基礎(chǔ)

<a name="22b8b366"></a>

1.13 靜態(tài)變量與實(shí)例變量的區(qū)別甚亭?

靜態(tài)變量 實(shí)例變量
定義 使用static關(guān)鍵字聲明的 實(shí)例變量在類中聲明膊夹,但是在方法层释,構(gòu)造函數(shù)或其他塊之外
初始化 屬于類截驮,只要加載了類的字節(jié)碼笑陈,就會被分配空間 必須創(chuàng)建實(shí)例對象,才會被分配空間
加載次數(shù) 初始化加載一次 每創(chuàng)建一次對象加載一次

<a name="3360eeec"></a>

1.14 是否可以從一個(gè)static方法內(nèi)部發(fā)出對非static方法的調(diào)用?

<br />不可以葵袭,static方法調(diào)用時(shí)不需要?jiǎng)?chuàng)建對象涵妥,非static方法的調(diào)用需要?jiǎng)?chuàng)建實(shí)例,那在這個(gè)時(shí)刻坡锡,就像是你想找對象秀恩愛蓬网,你對象還沒出生,這不扯呢<br />

<a name="6c5ca606"></a>

1.15 Math.round(1.5)等于多少鹉勒?Math.round(-1.5)又等于多少帆锋?

// Math.round 返回一個(gè)四舍五入的值
Math.round(1.5)  =  2
Math.round(-1.5) =  -1
//
Math.ceil() 向上取整
Math.floor() 向下取整

<a name="74f218ae"></a>

1.16 下面的代碼有什么不妥之處?

// 1
if(str.equals("test")){}

// 2
System.out.println(0.1+0.2);

<br />第一個(gè) str 為 null的話會拋出空指針異常禽额,所以改為 "test".equals(str)<br />第二個(gè)會輸出0.30000000000000004锯厢,改成<br />

System.out.println(new BigDecimal(String.valueOf(0.1)).add(new BigDecimal(String.valueOf(0.2))));

<a name="76fb7dfa"></a>

1.17 java中作用域 public,protected,private和默認(rèn)不寫時(shí)的區(qū)別

作用域 說明
public 可以被任何類訪問
protected 可以被同一包中的所有類訪問,被所有子類訪問绵疲,子類沒有在同一包中也可以訪問
private 只能夠被當(dāng)前類的方法訪問
缺省 無訪問修飾符哲鸳,可以被同一包中的所有類訪問臣疑,如果子類沒有在同一個(gè)包中盔憨,也不能訪問

<a name="2553c675"></a>

1.18 重載與重寫的區(qū)別

<br />很多,面試的時(shí)候就撿簡要的說<br />

  • 重載在一個(gè)類中讯沈,重寫發(fā)生在父子類
  • 重載是可以在一個(gè)類中有多個(gè)重名但參數(shù)列表不同郁岩,參數(shù)列表要個(gè)數(shù)或數(shù)據(jù)類型不同婿奔,重寫則返回值和形參都不能改變
  • 重寫的方法只能比父類拋出更少的異常,并且訪問限制符也只能比父類大<br />
    ps: 參數(shù)相同问慎,但返回值相同萍摊,那不叫重載,錯(cuò)誤寫法

<br />基本上回答這些就OK<br />擴(kuò)展:方法的重載與重寫都是實(shí)現(xiàn)多態(tài)的方式如叼,區(qū)別是前者是編譯時(shí)的多態(tài)性冰木,后者是運(yùn)行時(shí)的多態(tài)性,重寫遵循里氏代換原則笼恰,就是子類可以擴(kuò)展父類的功能踊沸,但不能改變父類原有的功能<br />

<a name="badee970"></a>

1.19 Integer與int的區(qū)別

  • Integer是int的包裝類,可以為 null 值
  • int是8種原始數(shù)據(jù)類型之一<br />
    8種原始數(shù)據(jù)類型與其包裝類型
原始 包裝類
byte Byte
short Short
int Integer
long Long
boolean Boolean
char Character
float Float
double Double

1.20 構(gòu)造器Constructor是否可被override?

<br />構(gòu)造器Constructor不能被繼承社证,因此不能重寫Override逼龟,但可以被重載Overload<br />

<a name="bdd0c610"></a>

1.21 java的接口可以繼承接口嗎?接口中可以定義靜態(tài)或者默認(rèn)方法嗎追葡?

<br />java的接口可以繼承接口腺律,第二個(gè)在jdk8之后也支持了,可以寫靜態(tài)方法體宜肉,但是默認(rèn)方法要用default修飾符<br />

public interface TestInterface implements A,B,C{  
  
    static void staticMethod() {  
        System.out.println("static method");  
    }
 
    default void defaultMethod() {  
        System.out.println("default method");  
    }
}

<a name="dcf93c57"></a>

1.22 抽象類可以實(shí)現(xiàn)接口嗎匀钧?抽象類是否可以繼承具體類?抽象類中是否可以有靜態(tài)main方法谬返?

  • 抽象類可以實(shí)現(xiàn)接口
  • 抽象類可以繼承具體類
  • 抽象類中可以有靜態(tài)main方法

<br />抽象類可以實(shí)現(xiàn)接口榴捡,可以不必須實(shí)現(xiàn)接口中的所有方法<br />
<br />抽象類與普通類的區(qū)別<br />

  • 前者不能實(shí)例化
  • 前者允許存在抽象方法
  • 后者實(shí)現(xiàn)接口必須要實(shí)現(xiàn)接口中所有方法

<a name="09764d9b"></a>

1.23 clone()有什么作用?

<br />super.clone()<br />拷貝使用<br />

package erdan.demo;

public class TestClone {
    public static void main(String[] args) throws CloneNotSupportedException {
        Demo demo = new Demo();
        demo.a = 1;
        demo.b = 2;
        Demo demo2 = (Demo) demo.clone();
        demo2.a = 100;
        System.out.println(demo.a + " " + demo.b);
        System.out.println(demo2.a + " " + demo2.b);
    }

    static class Demo implements Cloneable {
        int a;
        int b;

        public Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
    }
}

<a name="4e1b36ed"></a>

1.24 面向?qū)ο蟮奶卣?/h3>
特征 總結(jié)
封裝 隱藏對象的屬性與實(shí)現(xiàn)細(xì)節(jié)朱浴,對外提供公開的訪問接口
抽象 將一類對象共同特征總結(jié)出來構(gòu)造類的過程
繼承 從已有類得到繼承信息創(chuàng)建新類的過程
多態(tài) 指允許不同子類型的對象對同一消息作出的不同響應(yīng)

<a name="03cf2641"></a>

1.25 Java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么吊圾?

<br />答:父類中有方法 fun(),子類B與C分別繼承與重寫了fun()方法,當(dāng)創(chuàng)建一個(gè) A a = new B()時(shí)翰蠢,a.fun()調(diào)用的是B中的fun(),假若是new C(),那么調(diào)用的就是C中的fun()方法项乒,怎么判斷使用的是哪個(gè)類的fun(),就是動(dòng)態(tài)綁定,這個(gè)現(xiàn)象梁沧,就是多態(tài)<br />

1.26 abstract class 與 interface 有什么區(qū)別檀何?

  • abstract class可以有構(gòu)造方法,而interface不行
  • 單繼承(抽象類)廷支,多實(shí)現(xiàn)(接口)
  • 方法類型:接口只能有抽象方法频鉴。抽象類可以具有抽象和非抽象方法稿茉。從Java 8開始恨豁,接口還可以具有默認(rèn)方法和靜態(tài)方法。
  • 最終變量:在Java接口中聲明的變量默認(rèn)為final命爬,抽象類可能包含非 final 變量施敢。
  • 變量類型:抽象類可以具有 final周荐,非 final狭莱,static和非 static 變量。接口只有 static 變量和 final 變量概作。
  • 實(shí)現(xiàn):抽象類可以提供接口的實(shí)現(xiàn)腋妙。接口無法提供抽象類的實(shí)現(xiàn)。
  • 繼承與抽象:可以使用關(guān)鍵字“ implements”來實(shí)現(xiàn)Java接口讯榕,而可以使用關(guān)鍵字“ extends”來擴(kuò)展抽象類骤素。
  • 數(shù)據(jù)成員的可訪問性:默認(rèn)情況下,Java接口的成員是公共的愚屁。Java抽象類可以具有private谆甜,protected修飾的類成員
  • 接口是用來約束類的,抽象類基本是用來代碼復(fù)用的

1.30 抽象的方法可以是靜態(tài)的嗎?abstract與synchronized可以一起使用嗎集绰?

<br />用static聲明方法表明這個(gè)方法在不生成類的實(shí)例時(shí)可直接被類調(diào)用规辱,而abstract方法不能被調(diào)用,所以不能為靜態(tài)的栽燕。<br />synchronized作用在具體的方法上才有意義罕袋,所以不行<br />

1.31 什么是內(nèi)部類?Static Nested Class 與 inner class 不同點(diǎn)碍岔?

<br />內(nèi)部類顧名思義就是在類內(nèi)部的一個(gè)類浴讯,內(nèi)部類中不能定義靜態(tài)成員<br />Static Nested Class 靜態(tài)內(nèi)部類,不依賴于外部實(shí)例被實(shí)例化蔼啦,通常的內(nèi)部類需要在外部實(shí)例化后才能實(shí)例化榆纽。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捏肢,隨后出現(xiàn)的幾起案子奈籽,更是在濱河造成了極大的恐慌,老刑警劉巖鸵赫,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衣屏,死亡現(xiàn)場離奇詭異,居然都是意外死亡辩棒,警方通過查閱死者的電腦和手機(jī)狼忱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來一睁,“玉大人钻弄,你說我怎么就攤上這事≌哂酰” “怎么了窘俺?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長砚偶。 經(jīng)常有香客問我批销,道長,這世上最難降的妖魔是什么染坯? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任均芽,我火速辦了婚禮,結(jié)果婚禮上单鹿,老公的妹妹穿的比我還像新娘掀宋。我一直安慰自己,他們只是感情好仲锄,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布劲妙。 她就那樣靜靜地躺著,像睡著了一般儒喊。 火紅的嫁衣襯著肌膚如雪镣奋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天怀愧,我揣著相機(jī)與錄音侨颈,去河邊找鬼。 笑死芯义,一個(gè)胖子當(dāng)著我的面吹牛哈垢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扛拨,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼耘分,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绑警?” 一聲冷哼從身側(cè)響起求泰,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎计盒,沒想到半個(gè)月后拜秧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡章郁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年枉氮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暖庄。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡聊替,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出培廓,到底是詐尸還是另有隱情惹悄,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布肩钠,位于F島的核電站泣港,受9級特大地震影響暂殖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜当纱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一呛每、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坡氯,春花似錦晨横、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至悯恍,卻和暖如春库糠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涮毫。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工曼玩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窒百。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓黍判,卻偏偏與公主長得像,于是被迫代替她去往敵國和親篙梢。 傳聞我的和親對象是個(gè)殘疾皇子顷帖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345