《Java必須知道的300個問題》讀書總結
這本書是在圖書館隨便逛的時候找到的書。花了一下午看完了,感覺有用的地方不是很多,大部分都是些概念,並沒有太大用途。不過裡邊有些東西還是可以看一看的,總結如下。
Java語言基礎
1.表示式3-2.6==0.4的值?
答:false。 這是有基本資料型別浮點數計算的不精確性造成的。
3-2.6=0.39999999999999999999..
可以用BigDecimal進行浮點數精確計算。
2.&和&&兩個運算子的區別?
答:& 位與,&& 邏輯與。
3.不適用迴圈和條件語句如何求1+2+3+…+n?
答:函式遞迴呼叫。
4.能正確編譯”short s=1;s=s+1;”嗎?
答:不能。型別不匹配。可:s+=1;
5. += 計算結果一定正確嗎?
答:不。可能溢位。
6.兩個整數相乘結果一定正確嗎?
不。
long num=2147483648.超出int範圍,編譯錯誤。
long num=214748364*10 結果為-10.int溢位。
long num=2147483648L*10 正確。
7.如何跳出多重巢狀迴圈?
label:
fori(){
break label;
}
8.儲存相同資料量的一維陣列和二維陣列所佔記憶體是否相同?
二維陣列遠遠大於以為陣列。???
9.只能通過構造方法構造物件嗎?
不是。
Calendar c=Clalendar.getInstance();
10.介面和抽象類的區別?
1、抽象類可以提供成員的實現細節,而介面不能。數級抽象時如果要求提供成員的實現細節,可選抽象類。
2、如果涉及抽象時選擇抽象類,在以後的版本中可以隨意為抽象類新增新成員。而介面只有修改現有程式碼才能新增新成員。
3.一個類可以實現多個介面,但是能繼承一個抽象類。如果要實現類似多重繼承的效果,選介面。
兩者相似,某些功能可以互換。但理念不同,抽象類用於繼承,表示is-a;介面用於實現,表示like-a。
11.clone()方法的使用?
1.淺克隆
被克隆的物件各個屬性都是基本型別,而不是引用型別,如果存在引用型別的屬性,則需要進行深克隆。
2.深克隆
如果需要克隆的餓物件的域包含引用型別,則需要使用深克隆;
繁殖,可以直接使用Object類的clone()方法進行淺克隆。
12.兩種方式可以實現深克隆,效率如何?
1.序列化,效率很差。
2.榆次克隆各個可變的引用型別域的方式。
13.在內部類中呼叫外部類同名的成員?
在內部類中呼叫內容類的x: this.x=…
在內部類呼叫外部類的X: TheSamName.this.x=…
14.反射?
額,不會。。
字串和包裝類
15.自動裝包、拆包?
基本資料型別自動轉換成類.集合中不能儲存基本資料型別。
int a=3;
arraylist.add(a);
16.String可以被繼承麼?
不可以。final修飾的類不能被繼承。
17.各種進位制的轉換
Integer.parseInt(“101001010”,2);二進位制轉int
Integer.toBinaryString(int i);
…
Java集合類框架
18.陣列 和 集合的轉換
List list=new Arrays.asList(1,2,3,4,5);
Interger[] array=list.toArray(new Integer[]{});
19.Collection 和 Collections 的區別?
Collection是集合類的派生介面。是Java集合類的基礎。
Collections是為集合類定義的工具類,包含了一些查詢排序的方法,非常實用。
20.獲得Map中的全部鍵?
Map介面中的keySet()方法
Set keySet()
Set keySet=map.keySet();
然後通過鍵獲得值。
21.獲得Map中的全部值?
values()
Collection values()
Collection values=map.values();
22.獲得Map中的全部鍵值對?
Set
異常處理
23.throw和throws區別
throws是方法裡的宣告要丟擲什麼異常
throw是丟擲具體異常
I/O
24.物件流?
DataInput DataOutput 可以吧物件寫入到磁碟中
但是讀寫的物件必須實現了Serializable介面。