1. 程式人生 > >基礎java題目

基礎java題目

1.jdk,jre,jvm的關係
java開發工具包包含java開發環境,包含java虛擬機器

2.繼承的好處和特點
提高了程式碼的複用性
提高了程式碼的維護性
類和類之間產生了關係,是多型的前提
但是類的耦合性增強了

3.區域性變數和成員變數的區別
成員變數:在類中方法外面
區域性變數:在方法或者程式碼塊中,或者方法的宣告上(即在引數列表中)
成員變數:在堆中(方法區中的靜態區)
區域性變數:在棧中
成員變數:隨著物件的建立而存在,隨著物件的消失而消失
區域性變數:隨著方法的呼叫或者程式碼塊的執行而存在,隨著方法的呼叫完畢或者程式碼塊的執行完畢而消失
成員變數:有預設初始值
區域性變數:沒有預設初始值,使用之前需要賦值,否則編譯器會報錯(The local variable xxx may not have been initialized)

4.java有哪些型別,什麼是自動拆裝箱
字元型別char
布林型別boolean
整數型別byte、short、int、long
浮點數型別float、double。
這樣八個和基本資料型別對應的類統稱為包裝類(Wrapper Class)。

5.類變數和例項變數的區別
例項變數為所屬物件所私有,而類變數為所有物件所共有
6.static關鍵字的特點
修飾成員變數和成員方法
靜態程式碼塊
修飾類(只能修飾內部類)
靜態導包(用來匯入類中的靜態資源,1.5之後的新特性)

7.實現物件克隆
clone()進行淺複製,另外一種方法進行深複製

8.類的修飾符的區別
①該類自身;②與它在同一個包中的其它類;③在其它包中的該類的子類。使用修飾符 protected 的主要作用是允許其它包中它的子類來訪問父類的特定屬性。
9.如何實現序列化
Java中實現序列化的兩種方式 Serializable 介面和 Externalizable介面
10.抽象類和介面的關係
抽象類和介面都不能直接例項化,如果要例項化,抽象類變數必須指向實現所有抽象方法的子類物件,介面變數必須指向實現所有介面方法的類物件。
抽象類要被子類繼承,介面要被類實現。
介面只能做方法申明,抽象類中可以做方法申明,也可以做方法實現
接口裡定義的變數只能是公共的靜態的常量,抽象類中的變數是普通變數。
抽象類裡的抽象方法必須全部被子類所實現,如果子類不能全部實現父類抽象方法,那麼該子類只能是抽象類。同樣,一個實現介面的時候,如不能全部實現介面方法,那麼該類也只能為抽象類。
抽象方法只能申明,不能實現,介面是設計的結果 ,抽象類是重構的結果
抽象類裡可以沒有抽象方法
如果一個類裡有抽象方法,那麼這個類只能是抽象類
抽象方法要被實現,所以不能是靜態的,也不能是私有的。
介面可繼承介面,並可多繼承介面,但類只能單根繼承。
11.兩個物件值相同,切有不同的兩個hashcode
兩個物件值相同(x.equals(y) == true),則一定有相同的hash code。

14.封裝的原則
物件的資料封裝特性徹底消除了傳統結構方法中資料與操作分離所帶來的種種問題,提高了程式的可複用性和可維護性,降低了程式設計師保持資料與操作內容的負擔。
物件的資料封裝特性還可以把物件的私有資料和公共資料分離開,保護了私有資料,減少了可能的模組間干擾,達到降低程式複雜性、提高可控性的目的
15.java引數傳遞的問題
引數傳遞一般有兩種,一種是“傳值”,另一種是“傳地址值”。傳值是指在呼叫方法時,把引數的值傳遞給方法,而傳地址值則是給方法提供引數的地址值。Java中的引數傳遞方法都為傳值呼叫。下面我通過例子來驗證。