java基礎部分

1.java的基本數據類型及所佔的字節java

boolen  8位  1個字節程序員

byte 8位 1個字節算法

char 16位 2個字節編程

short 16位 2個字節數組

int 32位 4個字安全

float 32位 4個字節數據結構

double 64位 8個字節異步

long 64位  8個字節編程語言

2.java中==和.equals的區別ide

==是比較內存地址也就是對象的值

equals是比較的對象的內容

3.談談final, finally, finalize的區別。 

①final;當類被定義爲final時,該類不能被繼承,所以類不能abstract 和final同時使用,當方法被定義爲final時方法不能被重寫 當屬性被定義爲final時屬性的值不能被改變

②finally;在try..catch中使用,不論是否遇到異常都會進入到finally塊中

③finalize;Java 技術容許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去以前作必要的清理工做。這個方法是由垃圾收集器在肯定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,所以全部的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其餘清理工做。finalize() 方法是在垃圾收集器刪除對象以前對這個對象調用的。 

4.Anonymous Inner Class (匿名內部類) 是否能夠extends(繼承)其它類,是否能夠implements(實現)interface(接口)? 

匿名內部類是沒有名字的類,不能繼承別的類,可是能夠做爲接口被另外一個內部類實現

5.&和&&的區別

 &是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。

6.java集合的屬性

 List Set 屬於conction  

 6.1List(可重複值)   ->6.1.1ArrayList  [1.數組的方式存放數據,2.查詢快增刪慢、3.線程不安全]

                           ->6.1.2LinkList    [1.鏈表的方式存放數據,2.增刪快,查詢慢,3線程不安全]

 6.2Set(不可重複)   ->6.2.1 HashSet [1.線程不安全,2.存儲是無序的,3.性能優於treeSet]

                           ->6.2.2 treeSet  [1.有升序排序功能]

 6.3Map(key value的方式)  -> 6.3.1 HashMap  [1.線程不安全,2.無序的,3.value容許爲null]

                                     ->6.3.2  HashTable [線程安全 ,2.無序,3.value不容許爲null]

                                     ->6.3.3  treeMap [線程不安全]

7.線程的生命週期

   ①線程的建立 也就是new一個線程對象的時候,建立一個空的線程,系統不爲它分配資源

   ②可運行狀態 也就是調用了start()方法,系統爲線程分配資源,這時的狀態並非運行狀態,只有系統爲這個線程分配了CPU資源才真正運行

   ③不可運行狀態  當發生下列事件【調用了sleep()方法】【調用了wait()方法】【線程的輸入/輸出阻塞】

   處於sleep狀態的線程在指定的睡眠時間後返回可運行狀態

   處於wait狀態的線程須要等待對象調用notify()或者notifyAll()方法

   若是輸入輸出阻塞須要等待輸入輸出完成後

   ④ 消亡狀態   線程在run方法執行完畢後就進入消亡狀態

線程建立後,可經過調用setPriority()方法改變優先級。

8.Overload和Override的區別

 Overload是在同一個類中方法名稱相同,經過改變參數的個數或者類型來重載

 Override是在子類繼承父類,重寫父類中的方法

9.error和exception有什麼區別? 

   error 表示恢復不是不可能但很困難的狀況下的一種嚴重問題。好比說內存溢出。不可能期望程序能處理這樣的狀況。
 exception 表示一種設計或實現問題。也就是說,它表示若是程序運行正常,從不會發生的狀況。

 

10.int 和 Integer 有什麼區別?

  Java 提供兩種不一樣的類型:引用類型和原始類型(或內置類型)。Int是java的原始數據類型,Integer是java爲int提供的封裝類。Java爲每一個原始類型提供了封裝類。原始類型封裝類booleanBoolean    charCharacter  byteByte  shortShort  intInteger  longLong  floatFloat  doubleDouble引用類型和原始類型的行爲徹底不一樣,而且它們具備不一樣的語義。引用類型和原始類型具備不一樣的特徵和用法,它們包括:大小和速度問題,這種類型以哪一種類型的數據結構存儲,當引用類型和原始類型用做某個類的實例數據時所指定的缺省值。對象引用實例變量的缺省值爲 null,而原始類型實例變量的缺省值與它們的類型有關。

11.String 和StringBuffer的區別?

  String和StringBuffer,它們能夠儲存和操做字符串,即包含多個字符的字符數據。這個String類提供了數值不可改變的字符串。而這個StringBuffer類提供的字符串進行修改。當你知道字符數據要改變的時候你就可使用StringBuffer。典型地,你可使用StringBuffers來動態構造字符數據。

12.HashMap和Hashtable的區別。

  HashMap和Hashtable的區別。
HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在於HashMap容許空(null)鍵值(key),因爲非線程安全,效率上可能高於Hashtable。
HashMap容許將null做爲一個entry的key或者value,而Hashtable不容許。
HashMap把Hashtable的contains方法去掉了,改爲containsvalue和containsKey。由於contains方法容易讓人引發誤解。
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
最大的不一樣是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不須要本身爲它的方法實現同步,而HashMap 就必須爲之提供外同步。
Hashtable和HashMap採用的hash/rehash算法都大概同樣,因此性能不會有很大的差別。

13.同步和異步有何異同,在什麼狀況下分別使用他們?舉例說明

  若是數據將在線程間共享。例如正在寫的數據之後可能被另外一個線程讀到,或者正在讀的數據可能已經被另外一個線程寫過了,那麼這些數據就是共享數據,必須進行同步存取。
當應用程序在對象上調用了一個須要花費很長時間來執行的方法,而且不但願讓程序等待方法的返回時,就應該使用異步編程,在不少狀況下采用異步途徑每每更有效率。

14.abstract class和interface有什麼區別?

  聲明方法的存在而不去實現它的類被叫作抽象類(abstract class),它用於要建立一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的狀況。不能建立abstract 類的實例。然而能夠建立一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類爲它們父類中的全部抽象方法提供實現,不然它們也是抽象類爲。取而代之,在子類中實現該方法。知道其行爲的其它類能夠在類中實現這些方法。
接口(interface)是抽象類的變體。在接口中,全部方法都是抽象的。多繼承性可經過實現這樣的接口而得到。接口中的全部方法都是抽象的,沒有一個有程序體。接口只能夠定義static final成員變量。接口的實現與子類類似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)全部這種接口的方法。而後,它能夠在實現了該接口的類的任何對象上調用接口的方法。因爲有抽象類,它容許使用接口名做爲引用變量的類型。一般的動態聯編將生效。引用能夠轉換到接口類型或從接口類型轉換,instanceof 運算符能夠用來決定某對象的類是否實現了接口。

15.heap和stack有什麼區別。

  棧是一種線形集合,其添加和刪除元素的操做應在同一段完成。棧按照後進先出的方式進行處理。堆是棧的一個組成元素。

16.swtich是否能做用在byte上,是否能做用在long上,是否能做用在String上? 

  witch(expr1)中,expr1是一個整數表達式。所以傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能做用於swtich。

17.當一個對象被看成參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裏究竟是值傳遞仍是引用傳遞? 

  是值傳遞。Java 編程語言只有值傳遞參數。當一個對象實例做爲一個參數被傳遞到方法中時,參數的值就是對該對象的引用。對象的內容能夠在被調用的方法中改變,但對象的引用是永遠不會改變的。

18.Java中的異常處理機制的簡單原理和應用。

  當JAVA程序違反了JAVA的語義規則時,JAVA虛擬機就會將發生的錯誤表示爲一個異常。違反語義規則包括2種狀況。一種是JAVA類庫內置的語義檢查。例如數組下標越界,會引起IndexOutOfBoundsException;訪問null的對象時會引起NullPointerException。另外一種狀況就是JAVA容許程序員擴展這種語義檢查,程序員能夠建立本身的異常,並自由選擇在什麼時候用throw關鍵字引起異常。全部的異常都是java.lang.Thowable的子類。

19.描述一下JVM加載class文件的原理機制? 

  JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。

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

  字節流,字符流。字節流繼承於InputStream \ OutputStream,字符流繼承於InputStreamReader \ OutputStreamWriter。在java.io包中還有許多其餘的流,主要是爲了提升性能和使用方便

21.是否能夠從一個static方法內部發出對非static方法的調用? 

  不能夠,若是其中包含對象的method();不能保證對象初始化。

相關文章
相關標籤/搜索