【Java】java不可不知的22個知識點

1.java默認浮點型爲double型,所以需加"f或F"或強制轉型

float num=3.14159f

2.float浮點型基本類型計算不精確

3-2.6==0.4->false
3-2.6=0.399999....
可用高精度數字計算類BigDecimal解決

3.位運算是乘以2的倍數最快的計算方法

int value=2<<4 
//2乘以2的4次方

4.&與&&的區別

'&':位與運算符 對數進行運算
"&&":邏輯與運算符 對表達式進行運算

5.整數默認爲int型,浮點數默認爲double型
不同類型數值進行運算,結果爲精度最高的類型

double num=3+3.14;//可以
int num=3+3.14//需強制轉型

6.形參實參問題

基本數據類型在傳參時是值傳遞
引用類型在傳參時是引用傳遞(對象,數組...)
String有點特殊,可以當作值傳遞理解

7.java採用Unicode編碼,2字節表示一個字符

'a'的ASCII編碼的二進制數據形式爲01100001
Unicode字符編碼的數據形式爲00000000 01100001
'd'==100;//true
"d"==100;//false

8.java類都繼承Object類

Object.equals通常比較兩個引用是否指向內存中的同一個對象
所以String重寫equals比較兩者內容是否相等

9.如何創建Class對象?
Class也是一種類,各種name.class其實是它的實例化對象


 - Class c=Class.forName("java.lang.String");//通過類的完整路徑獲取Class對象
 
 - Class c=String.class;//通過類的class屬性得到Class對象

 - Student stu=new Student();//通過類的實例調用getClass方法得到
 Class c=stu.getClass();

10.分割字符串

String[] split=text.split("");//將每個字符分離出來成爲字符串數組
text.charAt[];//索引字符

11.java爲什麼要出現包裝類?

面向對象特點 :使基本數據類型賦予類和對象的特性,方便增加修改其中方法.

12.String類型不能繼承,定義爲final的類不能被繼承
13.線程安全與非線程安全的區別:

線程安全:多個線程訪問資源時,會將資源鎖住,等待線程結束,其他線程才能訪問.
ps:非線程安全比線程安全效率高,估計是省了上鎖時間.

14.replace(charsequence oldChar,charsequence newChar)與replaceAll(String regex ,String replacement)區別.
前者爲匹配字符或字符串
後者爲匹配正則表達式

String s="Hello.wolrd";
print (s.replace(".","/"));//=>"Hello/world"
print (s.replaceAll(".","/"));//=>"//////////"變成全是'/'

15.ArrayList和LinkedList的區別?

ArrayList  相當於數構中的線性表,底層使用數組來儲存元素。適合快速取得指定位置的元素,但刪除元素時,後面元素必須全部向前移動一位。
LinkedList  相當於數構中的鏈表,底層使用對象來保存元素,適合增加和刪除,獲取指定元素時,需從頭開始遍歷。

16.TreeSet是Set接口中唯一實現排序的實現類。

17.Map類似於數學中的函數,Set類似集合

18.Collections工具類是爲Collection接口及其實現類提供附加操作。

19.方法內部有throws Exception ,就需要在調用此方法時使用try…catch捕捉異常

20.釋放資源時應該遵循先打開後釋放的原則

例:先打開輸入流,再打開輸出流,就需要先關閉輸出流,後關閉輸入流

21.字符流和字節流的區別?

字符流多用於文本文件(按字符字節數大小讀取)
字節流多用於二進制文件(按數據類型字節數大小讀取)

22.泛型不支持協變

List<Object> a=new List<Integer> ;//編譯不通過
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章