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