1. 程式人生 > >《Java必須知道的300個問題》讀書總結

《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介面。