Java基礎知識篇

來源:互聯網
上載者:User

標籤:java基礎   大於   回收   運行時   reader   cti   字串   編譯器   運算   

1、&和&&的區別?

答:&和&&都可以用作邏輯與的運算子,表示邏輯與(and);

&&還有短路的功能,即如果第一個運算式為false,則不再計算第二個運算式;

&是位元運算符,表示按位與運算。

 

2、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

答:switch(expr1)中,expr1是一個整數運算式。整數運算式可以是int基本類型或Integer封裝類型,

由於,byte,short,char都可以隱含轉換為int,所以這些類型以及它的封裝類型可以。long,String 不能被隱式轉換為int類型,所以不能作用於swtich語句種。

 

3、用最有效率的方法算出2乘以8等於幾?

答:2 << 3

 

4、==和equals方法的區別?

String a=new String("abc");String b=new String("abc");

這兩行代碼建立了兩個對象,這是兩個不同的對象,它們的首地址是不同的。

所以,運算式a==b返回false,而這兩個對象中的內容是相同的,a.equals(b)將返回true。

 

5、.Collection和Collections的區別?

答:collection是集合類的上級介面,繼承與它的介面主要是set和list

其中list必須以特定的順序容納元素;而set不能包含重複的元素.

collections類是針對集合類的一個協助類.它提供一系列的靜態方法對各種集合的搜尋,排序,安全執行緒化等操作.

 

6、Overload和Override的區別?Overloaded的方法是否可以改變傳回值的類型?

答:方法的重寫Overriding和重載Overloading是Java多態性的不同表現。

重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。

如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。

如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。

Overloaded的方法是可以改變傳回值的類型

 

7、是否可以繼承String類?

答:String類是final類故不可以繼承

 

8、try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?

答:會執行,在return前執行

 

9、當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞?

答:是值傳遞。Java 程式設計語言只有值傳遞參數。

當一個對象執行個體作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的.

 

10、ArrayList和Vector的區別,HashMap和Hashtable的區別?

答:就ArrayList與Vector主要從二方面來說.

  一.同步性:Vector是安全執行緒的,也就是說是同步的,而ArrayList是線程式不安全的,不是同步的

  二.資料增長:當需要增長時,Vector預設增長為原來一培,而ArrayList卻是原來的一半

就HashMap與HashTable主要從三方面來說。

  一.曆史原因:Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一個實現

  二.同步性:Hashtable是安全執行緒的,也就是說是同步的,而HashMap是線程式不安全的,不是同步的

  三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value

 

11、GC是什麼? 為什麼要有GC?

答:GC是垃圾收集的意思(Gabage Collection),記憶體處理是編程人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過範圍從而達到自動回收記憶體的目的,Java語言沒有提供釋放已指派記憶體的顯示操作方法。

 

12、介紹JAVA中的Collection FrameWork(包括如何寫自己的資料結構)?

答:Collection FrameWork如下:

  Collection

  ├List

  │├LinkedList

  │├ArrayList

  │└Vector

  │ └Stack

  └Set

  Map

  ├Hashtable

  ├HashMap

  └WeakHashMap

  Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素(Elements)

  Map提供key到value的映射.

 

1.3、String與StringBuffer的區別?

答:String的長度是不可變的,StringBuffer的長度是可變的。

如果你對字串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法

 

14、談談final, finally, finalize的區別

答:final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變數或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變數必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載

  finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)

  finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從記憶體中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的

 

15、運行時異常與一般異常有何異同?

答:異常表示程式運行過程中可能出現的非正常狀態,運行時異常表示虛擬機器的通常操作中可能遇到的異常,是一種常見運行錯誤。

  java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。

 

16、說出ArrayList,Vector, LinkedList的儲存效能和特性

答:ArrayList和Vector都是使用數組方式儲存資料,此數組元素數大於實際儲存的資料以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等記憶體操作,所以索引資料快而插入資料慢。

Vector由於使用了synchronized方法(安全執行緒),通常效能上較ArrayList差。

LinkedList使用雙向鏈表實現儲存,按序號索引資料需要進行前向或後向遍曆,但是插入資料時只需要記錄本項的前後項即可,所以插入速度較快。

 

17、HashMap和Hashtable的區別?

答:HashMap是Hashtable的輕量級實現(非安全執行緒的實現),他們都完成了Map介面,主要區別在於HashMap允許空(null)索引值(key),由於非安全執行緒,效率上可能高於Hashtable。

  HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。

  HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。

  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。

 

18、java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類別以供繼承,請說出他們分別是哪些類?

答:位元組流,字元流。位元組流繼承於InputStream OutputStream,字元流繼承於InputStreamReader OutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高效能和使用方便。

 

19、List、Map、Set三個介面,存取元素時,各有什麼特點?

答:List 以特定次序來持有元素,可有重複元素。Set 無法擁有重複元素,內部排序。Map 儲存key-value值,value可多值。

Java基礎知識篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.