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> ;//編譯不通過