Thinking In Java 學習筆記 1-5 章

第1章 對象導論編程

本章主要講OOP的思想及一些OOP基本概念數組

一、抽象過程:萬物都是對象,對象具備狀態、行爲和標識。對象擁有屬性和方法,以及在內存中的惟一地址。併發

二、每一個對象都有一個接口:經過接口給對象發送消息請求來控制和操做對象,這裏的接口是指對象的方法。函數

三、每一個對象都提供服務:將對象想象成服務提供者,調用對象提供的服務來實現某一目的。spa

四、被隱藏的具體實現:對象對外界只提供服務接口,而隱藏內部的實現細節,經過關鍵字(public、private、protected)來設定邊界。對象

五、複用具體實現:新建的類能夠複用建立好的類實現更加複雜的功能。繼承

六、繼承:導出類能夠擁有父類全部的特性。接口

七、多態:不一樣子類能夠不一樣的方式實現基類的方法。生命週期

八、單根繼承:OOP的全部類都繼承自Object。內存

九、容器:對象的集合List、Map、Set,參數化類型ArrayList<String>實現正確的轉型

十、對象的建立和生命週期:Java採用動態內存分配方式,new一個對象存儲在堆中,由於是動態分配管理因此建立時間將遠遠大於直接在堆棧(C++存儲在此)中建立空間的時間,動態分配能夠帶來更大的靈活性,C++須要經過編程方式來銷燬對象否則可能會致使內存泄漏,Java經過垃圾回收器自動內存釋放。

十一、異常處理:Java內置了異常處理機制。

十二、併發:Java的併發內置於語言中。

1三、Java與Internate。

第2章 一切都是對象

一、用引用操縱對象。

二、對象都由new 來建立,存儲數據的5個地方 寄存器(不能認爲控制)、堆棧(RAM區)、堆(RAM區,全部的Java對象都存於此)、常量存儲(程序代碼內部)、非RAM存儲(存儲存活於程序以外的數據)。

三、Java類的基本成員會自動設置默認值。

四、類建立的全部對象的Static字段只分配一個內存。

 

第3章 Java操做符

一、==和!=比較的是對象的引用

Integer n1=new Integer(47);//new 的就是對象

Integer n2=new Integer(47);

System.out.println(n1==n2);  //false

System.out.println(n1!=n2);  //true

比較兩個對象的實際內容是否相同用equals(),這個方法不適用與基本類型,基本類型用==和!=便可

System.out.println(n1.equals(n2));  //true

下一種情形:

class Value{

  int i;

}

Value v1=new Value();

Value v2=new Value();

v1.i=v2.i=100;

System.out.println(v1.equals(v2));  //false

因爲equals默認行爲是比較引用,因此這句輸出的是false,上例中基本類型Interger的equals方法是覆蓋過的,因此輸出的是true。

第4章 控制執行流程

一、

if-else

while

do-while :至少執行一次do的內容

for

Foreach:for(String s : str)  str是一個String數組

 

二、標籤:Java須要使用標籤的惟一理由是由於有循環嵌套,而想從多層嵌套中break或Continue

標籤的語法: label:  標籤後面跟有冒號的標識符

Outer:    //定義標籤

while(true){

 

  while(true){

    i++;

    if(i==3)

      continue Outer;    // 帶標籤的continue會到達標籤的位置,並從新進入緊接在那個標籤後的循環。

    if(i==5)

      break Outer;  //帶標籤的break會中斷並跳出標籤所指的循環。

  }

...

}

 

三、Switch的參數必須是int或char的整數值或者enum值。

第5章 初始化與清理

一、用構造函數確保初始化:與類同名且沒有返回值

二、初始化順序:自動初始化將在調用構造器以前,按類中變量定義的前後順序

三、可變參數:Object......args

四、枚舉:enum.values(),enum.ordinal() 獲取聲明順序

相關文章
相關標籤/搜索