更新時間:2019-09-18 14:35:26 來源:動力節(jié)點 瀏覽2599次
1、面向?qū)ο蟮奶卣饔心男┓矫妫?/strong>
-抽象:抽象是將一類對象的共同特征總結(jié)出來構(gòu)造類的過程,包括數(shù)據(jù)抽象和行為抽象兩方面。抽象只關(guān)注對象有哪些屬性和行為,并不關(guān)注這些行為的細節(jié)是什么。
-繼承:繼承是從已有類得到繼承信息創(chuàng)建新類的過程。提供繼承的類叫父類(超類、基類)、得到繼承的類叫子類(派生類)。
-封裝:通常認為封裝是把數(shù)據(jù)和操作數(shù)據(jù)的方法綁定起來,對數(shù)據(jù)的訪問只能通過已定義的接口。可以說,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的編程接口(可以想想普通洗衣機和全自動洗衣機的差別,明顯全自動洗衣機封裝更好因此操作起來更簡單;我們現(xiàn)在使用的智能手機也是封裝得足夠好的,因為幾個按鍵就搞定了所有的事情)。
-多態(tài)性:多態(tài)性是指允許不同子類型的對象對同一消息作出不同的響應(yīng)。簡單的說就是用同樣的對象引用調(diào)用同樣的方法但是做了不同的事情。實現(xiàn)多態(tài)需要做兩件事:1).方法重寫(子類繼承父類并重寫父類中的方法);2).對象造型(用父類型引用引用子類型對象,這樣同樣的引用調(diào)用同樣的方法就會根據(jù)子類對象的不同而表現(xiàn)出不同的行為)
2、訪問修飾符public,private,protected,以及不寫(默認)時的區(qū)別?
3、String是最基本的數(shù)據(jù)類型嗎?
答:不是。Java中的基本數(shù)據(jù)類型只有8個:byte、short、int、long、float、double、char、boolean;除了基本類型(primitivetype)和枚舉類型(enumerationtype),剩下的都是引用類型(referencetype)。
4、floatf=3.4;是否正確?
答:不正確。3.4是雙精度數(shù),將雙精度型(double)賦值給浮點型(float)屬于下轉(zhuǎn)型(down-casting,也稱為窄化)會造成精度損失,因此需要強制類型轉(zhuǎn)換floatf=(float)3.4;或者寫成floatf=3.4F;。
5、shorts1=1;s1=s1+1;有錯嗎?shorts1=1;s1+=1;有錯嗎?
答:對于shorts1=1;s1=s1+1;由于1是int類型,因此s1+1運算結(jié)果也是int型,需要強制轉(zhuǎn)換類型才能賦值給short型。而shorts1=1;s1+=1;可以正確編譯,因為s1+=1;相當于s1=(short)(s1+1);其中有隱含的強制類型轉(zhuǎn)換。
6、int和Integer有什么區(qū)別?
答:Java是一個近乎純潔的面向?qū)ο缶幊陶Z言,但是為了編程的方便還是引入了基本數(shù)據(jù)類型,但是為了能夠?qū)⑦@些基本數(shù)據(jù)類型當成對象操作,Java為每一個基本數(shù)據(jù)類型都引入了對應(yīng)的包裝類型(wrapperclass),int的包裝類就是Integer,從Java5開始引入了自動裝箱/拆箱機制,使得二者可以相互轉(zhuǎn)換。
最近還遇到一個面試題,也是和自動裝箱和拆箱有點關(guān)系的,代碼如下所示:
如果不明就里很容易認為兩個輸出要么都是true要么都是false。首先需要注意的是f1、f2、f3、f4四個變量都是Integer對象引用,所以下面的==運算比較的不是值而是引用。裝箱的本質(zhì)是什么呢?當我們給一個Integer對象賦一個int值的時候,會調(diào)用Integer類的靜態(tài)方法valueOf
簡單的說,如果整型字面量的值在-128到127之間,那么不會new新的Integer對象,而是直接引用常量池中的Integer對象,所以上面的面試題中f1==f2的結(jié)果是true,而f3==f4的結(jié)果是false。
7、&和&&的區(qū)別?
雖然二者都要求運算符左右兩端的布爾值都是true整個表達式的值才是true。&&之所以稱為短路運算是因為,如果&&左邊的表達式的值是false,右邊的表達式會被直接短路掉,不會進行運算。很多時候我們可能都需要用&&而不是&,例如在驗證用戶登錄時判定用戶名不是null而且不是空字符串,應(yīng)當寫為:username!=null&&!username.equals(“”),二者的順序不能交換,更不能用&運算符,因為第一個條件如果不成立,根本不能進行字符串的equals比較,否則會產(chǎn)生NullPointerException異常。注意:邏輯或運算符(|)和短路或運算符(||)的差別也是如此。
8、解釋內(nèi)存中的棧(stack)、堆(heap)和靜態(tài)區(qū)(staticarea)的用法。
棧空間操作起來最快但是棧很小,通常大量的對象都是放在堆空間
Stringstr=newString("hello");
上面的語句中變量str放在棧上,用new創(chuàng)建出來的字符串對象放在堆上,而”hello”這個字面量放在靜態(tài)區(qū)。
9、Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在參數(shù)上加0.5然后進行下取整。
10、switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
expr可以是byte、short、char、int、enum、String類型,但是long類型不能
以上就是動力節(jié)點java培訓機構(gòu)小編為大家介紹的“10道一線互聯(lián)網(wǎng)企業(yè)常問的Java面試題大全”的內(nèi)容,希望對大家有幫助,更多java最新資訊請繼續(xù)關(guān)注動力節(jié)點java培訓機構(gòu)官網(wǎng),每天會有精彩內(nèi)容分享與你。