1、物件導向的特徵有哪些方面?
1.封裝:常見的將乙個物件私有化後封裝到乙個類裡面,只能通過方法訪問;
2.繼承:子類繼承父類,從而具有了父類的方法和屬性;
3.抽象:申明為abstract,乙個類一旦被申明為abstract,即為抽象類,
就不能被直接例項化;
抽象方法:在乙個類裡面定義乙個方法,這個方法沒有具體的實現體,
即為「空方法」,那麼這個方法就是抽象方法,被abstract修飾;
4.多型:多型分為類的多型和操作符多型;
多型:同乙個型別,呼叫同乙個方法,呈現出不同結果,既是多型;
操作符多型:+既可以是關係運算子,也可以作為連線符;
類的多型:父類引用指向子類物件,有繼承和方法的重寫;
2、string是最基本的資料型別嗎?
基本的資料型別有:整型:byte(8) short(16) int (32) long(64)
浮點型:float(32) double(64)
位元組型:char(16)
布林型:boolean
所以string 不是基本的資料型別,而是類型別。
3、int和internet的區別?
int 是基本資料型別的整型,32位;integer是int的封裝類,類型別;
二者可以通過裝箱、拆箱相互裝換:
integer it=new integer(i)——int轉換為integer
int i2=轉化為int
4、string 和stringbuffer的區別?
string是不可改變的,一旦確定,包括內容長度都不可以改變;
stringbuffer是可以改變的,包括長度內容等;
stringbuffer原理:stringbuffer內部是採用字串陣列進行資料儲存的,
在需要改變時可以通過建立乙個新陣列來實現,將原陣列複製到新陣列即可
stringbuilder:stringbuilder 是非執行緒安全的,當進行大量字串拼接操
作的時候,如果是單執行緒就用stringbuilder會更快些,如果是多執行緒,就
需要用stringbuffer 保證資料的安全性
5、執行時異常和一般異常的區別?
異常分為:error、非可查異常、一般異常;
執行時異常既是非可查異常,程式編譯時一般不是必須要求捕捉或者處理;
常見的執行異常:除數為0異常、空指標異常、下標越界異常
一般異常又叫可查異常,必須要求捕捉或者丟擲異常;
6、collection和collections的區別?
collection是介面,是list和set的父介面;
collections是容器工具類,包含排序、混淆、反轉等方法,可以直接呼叫
7、說出arraylist、vector、linkedlist的儲存效能和特徵?
和vector:
arraylist和vector都繼承抽象類abstractlist,vector是執行緒安全的,
arraylist不是執行緒安全的
和linkedlist:
arraylist:是資料結構(順序結構),定位快,插入資料和刪除資料慢
linkedlist:雙向鍊錶結構,定位慢,插入資料和刪除資料快
8、&和&&的區別?
二者都可以作為邏輯與,但&還可以作為位與;
&長路與:兩邊都會運算;
&&短路與:左邊為false,就不會運算右邊的;
9、hashmap和hashtable的區別?
二者都繼承了map介面,都是採用鍵值對方式儲存資料;
hashmap:可以為null,但不是執行緒安全的;
hashtable:不可以為null,但是執行緒安全的;
10、final、finally、finalize()的區別?
final:修飾類,該類不能被繼承;
修飾方法,該方法不能被重寫;
修飾變數,該變數只有一次賦值機會;
修飾引用,該引用只有一次指向物件的機會;
finally:在異常處理時用到,不管程式是否有異常,finally裡面的**
都會執行;
finalize:是object的方法,所有類都繼承了該方法,當滿足垃圾**機制,
並進行**時,就呼叫finalize()方法進行垃圾**
11、overload(過載)和override(重寫)的區別?
overload:同乙個類裡面,方法名一樣,只是引數不一樣;
過載本質就是不同的兩個方法,只是恰好方法名一樣
override:子類繼承父類方法,將方法在重新寫一遍
12、error和exception的區別?
二者都繼承了throwable介面
error:錯誤,屬於異常的一種,系統性異常,比如系統記憶體不足;
exception:**邏輯性異常,包含執行時異常和一般異常(可查異常);
十三、abstract class(抽象類)和inte***ce(介面)的區別?
使用方法:1)抽象類通過繼承來實現;乙個類繼承了抽象類,就必須
重寫其抽象方法;
2)介面必須通過實現該介面來實現;
實現方法:1)抽象類不僅可以提供抽象方法,還可以提供實現方法;
2)介面可以提供抽象方法,jdk8之後可以提供實現方法,
須在方法淺見前面加上default修飾;
十四、heap和stack的區別?
heap:堆,用來存放物件,是自增長大小,不需指定大小,但訪問速度慢;
stack:棧,用來存放基本型別(int、boolean等)、引用(物件位址)、
方法呼叫,固定大小,但訪問速度比較快;
15、gc是什麼?為何需要gc?
gc是garbage collection縮寫,垃圾**;
一些不需要的物件,jvm的垃圾**機制會自動**處理,從而將開發
人員從手動和易犯錯的手動**中解放出來,進而提高開發效率;
16、j**a有沒有gato?
有,goto是關鍵字,但是是保留字,並不具備功能性;
17、介面是否可以實現介面?抽象類是否可以繼承實體類?
抽象類是否可以實現介面?
1)介面是否可以實現介面?
可以,介面list就實現了介面collection;
2)抽象類是否可以繼承實體類?
可以,抽象類abstract class 都繼承了object類(所有類的父類)
3)抽象類是否可以實現介面?
可以,比如mouseadapter滑鼠監聽介面卡是乙個抽象類,實現了介面
mouselister介面
18、list、set、map是否都實現了collection介面?
list、set實現了collection介面;
map跟collection則沒有關係,他們乙個是鍵值對容器,乙個是單值容器,
無法相容
19、陣列獲取長度有沒有length()方法?string獲取長度有沒有length()方法?
陣列獲取長度是.length屬性;
string獲取長度是length()方法;
集合獲取長度是size()方法;
檔案獲取長度是length()方法;
二十、set裡的元素是不能重複的,那用什麼方法來判斷是否重複?
以hashset為例:
1)比較hashcode是否一樣,如果不一樣,則沒有重複;
2)如果hashcode一樣,則比較equals,equals不一樣則不一樣;
二十一、構造器constructor是否可以被override?是否可以繼承string?
答:子類不能夠繼承父類的構造方法,所以不存在重寫override父類構
造方法;
string是被final修飾,所以不能被繼承。
二十二、switch可以作用在那些型別上?
switch可以作用在byte、short、int、string、enum(列舉)上,不能作用在
long上面
二十三、try裡面有return語句,緊跟之後的try的finally裡面的code會不會
執行?是在return之前還是之後執行?
二者都會執行,但是當前**只會採用finally裡面的語句,在return
之前執行
二十四、兩個物件值相同(但卻有不同的hashcode?
hashcode()方法和equals()方法都可以通過自定義方法重寫,從而可以
有相同的equals,不同的hashcode。
但是:在object的equals方法裡面定義了:通常在重寫乙個方法的是否,
會將它的hashcode方法一起重寫,從而保障二者的一致性。當
equals為true 時,二者必然有相同點hashcode值。
所以:上述論題有誤。
二十五、垃圾**的原理和優點。並考慮兩種**機制。
原理:當某個乙個物件,沒有任何引用指向它的時候,那麼它就滿足垃
**的條件,在適當的時候,jvm虛擬機器進行gc將其**,釋
放空間,以供後續再利用。
優點:與c語言開發人員需要手動進行記憶體資源的釋放不同,j**a提供垃圾**機制,自動進行gc(垃圾**),將開發人員從容易犯錯的記憶體資源管理中解放出來。
java面試題j2ee面試題
1 在j2ee中有個容器的概念,下面對容器的陳述正確的是 a.容器不提供事務服務。b.容器為元件提供執行時的服務。c.容器還提供安全管理。d.容器是一種j2ee執行時的元件。2 基於元件的n層體系結構和傳統的二層 三層 n層的不同點是 a.基於元件的n層體系中,單一的中間層應用物件已被能相互交流的若...
面試題整理
口試答辯題 一 特種裝置安全監察條例 中對壓力管道的安全監察範圍是如何規定的?答 壓力管道是指利用一定的壓力,用於輸送氣體或者液體的管狀裝置,其範圍規定為最高工作壓力大於或等於0.1mpa 表壓 的氣體 液化氣體 蒸汽介質或者可燃 易爆 有毒 有腐蝕性 最高工作溫度高於或等於標準沸點的液體介質,且公...
面試題整理
1.如何理解 良禽擇木而棲,賢臣擇主而事 答 這個俗語出現在我國古代,在民間流傳已久,意義深刻,它的意思是,優秀的禽鳥會選擇理想的樹木作為棲息的地方,優秀的人選擇賢明的君主侍奉。這句話,充分體現了古代人民的智慧型,至今對我們的工作學習和生活,仍有著積極的深刻的指導意義。它告誡我們,要學會趨利避害。也...