java問題小總結

1.java數據類型:
兩種類型的區別:基本數據類型是直接存儲數據的值:值傳遞
引用數據類型存放的數據所在的地址:址傳遞
基本數據類型:8種 1byte=8bit
①整形:byte 1 short 2 int 4 long 8 默認值0
②浮點型: float 4 double 8 默認值0.0
③char 2 默認值\u0000
④boolean 默認值 false
引用數據類型:類(class),數組(interface),接口 默認值null
封裝類
boolean(布爾型) Boolean
byte(字節型) Byte
char(字符型) Character
short(短整型) Short
int(整形) Integer
long(長整形 ) Long
float(浮點型) Float
double(雙精度浮點型)Double
面試題什麼是不可變對象(immutable object)、
不可變對象指對象一旦被創建,狀態就不能在改變。任何修改都會 創建一個新的對象,如String、Integer及其他包裝類。
"面試題"數據類型的轉換
1.自動轉換:
2.特例;可以將整形直接賦值給byte,short,char
3.強制轉換:大轉小,易失真
2.int和Integer的區別
1>、Integer是int的包裝類,int則是java的一種基本數據類型
2>、Integer變量必須實例化後才能使用,而int變量不需要
3>、Integer實際是對象的引用,當new一個Integer時,實際上是生成一個指針指向此對象;而int則是直接存儲數據值
4>、Integer的默認值是null,int的默認值是0
3.自動裝箱和自動拆箱
裝箱就是自動將基本數據類型轉換爲包裝器類型;拆箱就是自動將包裝器類型轉換爲基本數據類型
4.方法的遞歸與方法的重載*
方法的遞歸:方法內部調用自己
方法的重載:在一個類中,出現重名方法,參數列表不同(參數列表中的類型或參數的個數不同),方法的返回類型,修飾符可以相同,也可以不同
5.java中equal和l的區別是什麼
判斷2個變量或對象實例是否指向同一個內存空間,
equal指的是2個變量或對象實例所指向的內存空間是否一樣大小
表示對內存地址進行比較
equal()表示對字符串內容進行比較
表示引用是否相同,equals() 表示值是否相同。

6.接口和抽象類的區別
抽象類是什麼:
抽象類不能創建實例,它只能作爲父類被繼承。抽象類是從多個具體類中抽象出來的父類,它具有更高層次的抽象。從多個具有相同特徵的類中抽象出一個抽象類,以這個抽象類作爲其子類的模板,從而避免了子類的隨意性。
1抽象方法只能被聲明,而不包括實現
2)抽象類不能被實例化
3)抽象類可以不是必須有抽象方法和屬性,但是一旦有了抽象方法,就一定把這個類聲明爲抽象類
4)具體派生類必須覆蓋基類的抽象方法
5)抽象派生類可以覆蓋基類的抽象方法,也可以不覆蓋。如果不覆蓋,則其具體派生類必須覆蓋它們
接口是什麼:
1)接口不能被實例化
2)接口只能包含方法聲明
3)接口的成員包括方法,屬性,索引器,時間
4)接口中不能包含常量、字段(域)、構造函數、析構函數、靜態成員
區別:
1.抽象類可以定義屬性和非抽象方法,而接口只能是常量和抽象方法
2.抽象類有構造函數,子類可以使用,但是不能new對象,而接口沒有
3.抽象類是類,在java中類的繼承是單根繼承,而一個類可以實現多個接口
4.抽象類可以繼承抽象類,符合單根繼承
5.抽象類可以實現接口
6.接口之間可以繼承,而且可以多繼承
接口和抽象類的相同點:
(1) 都可以被繼承
(2) 都不能被實例化
(3) 都可以包含方法聲明
(4) 派生類必須實現未實現的方法
7.權限四個權限
public;公共,適用於所有
protected:適用於本包和子類
默認:包內有效
private:僅適用於類內部
8.static關鍵字
static叫做靜態,屬於修飾符
1.static只能修飾屬性和方法
2.static修飾的屬性和方法屬於類級別,不屬於對象,一個類擁有一份,所有對象共享,在內存只有一份
3.static屬性和方法不需要創建對象直接可以使用類名調用
4.static屬性和方法存在的時候不一定有對象,static的在類加載時就初始化了
5.static修飾的可以直接類名.使用
6.不能使用this
9.java變量
局部變量(本地變量):類的方法中的變量,必須初始化
實例變量:獨立於方法之外的變量,不過沒有用static修飾
類變量(靜態變量):獨立於方法之外的變量,用static修飾
10.String、StringBuffer和StringBuilder存在的作用:
String 字符串常量;一旦聲明就不可改變;String類是final類不可繼承;
StringBuffer 字符串變量(線程安全)類中提供的方法都是同步方法;
StringBuilder 字符串變量(非線程安全)類中方法屬於異步方法;
11.單例模式
單例模式確保某一個類只能有一個實例,而且自行實例化並向整個系統提供這個實例。在計算機系統中,線程池,緩存,日誌對象,對話框,打印機,顯卡的驅動程序對象常被設計成單例
1.單例類只能有一個實例
2.單例類必須自己創建自己的唯一實例
3.單例類必須給所其他對象提供這一實例
優點
(1)由於單例模式在內存中只有一個實例,減少了內存開支,特別是一個對象需要頻繁地創建、銷燬時,而且創建或銷燬時性能又無法優化,單例模式的優勢就非常明顯。
(2)由於單例模式只生成一個實例,所以減少了系統的性能開銷,當一個對象的產生需要比較多的資源時,比如讀取配置、產生其他依賴對象時,則可以通過在應用啓動時直接產生一個單例對象,然後用永久駐留內存的方式來解決。
(3)單例模式可以避免對資源的多重佔用,例如一個寫文件操作,由於只有一個實例存在內存中,避免對同一個資源文件的同時寫操作。
(4)單例模式可以在系統設置全局的訪問點,優化和共享資源訪問,例如,可以設計一個單例類,負責所有數據表的映射處理。
缺點:
1)單例模式一般沒有接口,擴展很困難,若要擴展,除了修改代碼基本上沒有第二種途徑可以實現。
(2)單例對象如果持有Context,那麼很容易引發內存泄露,此時需要注意傳給單例對象的Context最好是Application Contex
12.面向對象的五大設計原則、
a.單一職責原則
b.開放封閉原則
c.替換原則、
d.依賴原則
e.接口分離原則
13.error和Exception的區別:Error類和Exception類都是繼承Throwable類
error錯誤是系統中的錯誤,程序員是不能改變的和處理的,是在程序編譯時出現的錯誤,只能通過修改程序才能修正。一般是指與虛擬機相關的問題,如系統崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢等。對於這類錯誤的導致的應用程序中斷,僅靠程序本身無法恢復和和預防,遇到這樣的錯誤,建議讓程序終止。
exception異常表示程序可以處理的異常,可以捕獲且可能恢復。遇到這類異常,應該儘可能處理異常,使程序恢復運行,而不應該隨意終止異常。
exception分爲兩種
①CheckedException:(編譯時異常) 需要用try——catch顯示的捕獲,對於可恢復的異常使用CheckedException。
②UnCheckedException(RuntimeException):(運行時異常)不需要捕獲,對於程序錯誤(不可恢復)的異常使用RuntimeException。
14.數組和集合的區別
集合:list,map,set 對象類型Object或泛型
區別:
①數組聲明瞭它容納的元素的類型,而集合不聲明、
②數組是靜態的,一個數組實例具有固定的大小,一旦創建了就無法改變容量了。而集合是可以動態擴展容量,可以根據需要動態改變大小,集合提供更多的成員方法,能滿足更多的需求
③數組的存放的類型只能是一種(基本數據類型|引用數據類型),集合存放的類型可以不是一種(不加泛型時添加的類是Object)
④數組是java語言中內置的數據類型,是線性排列的,執行效率或者檢查都是最快的
集合體繫結構
collection(set和list)
1.list有序集合,允許相同元素和null
2.set無序集合
15.反射是什麼
反射可以在運行時根據指定的類名獲得類的信息。動態的獲取類對象的信息哦i

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章