1.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的區別
==是比較內存地址也就是對象的值
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();不能保證對象初始化。
新聞熱點
疑難解答