Java思想概述
面向物件思想概述
第一個面嚮物件語言的基本特徵:
- 萬物皆為物件。(封裝)
- 程式是物件的集合,它們通過傳送訊息來告知彼此所要做的。(方法呼叫)
- 每個物件都有自己的由其他物件所構成的儲存。(基本型別變數或自定義型別變數)
- 每個物件都擁有其型別。(每個物件都是該型別的例項,對應java中的class)
- 某一特定型別的所有物件都可以接收同樣的訊息。(多型)
關於public、private、protected的理解:
將開發人員按照角色分為類建立者和類使用者(think in java 中被叫做客戶端程式設計師)。類使用者的目標是收集各種用來實現快速應用開發的類。類建立者的目標是構建類,構建類的時候只需要暴露必需的部分,隱藏其他部分。通常被隱藏的都是類內部比較脆弱的部分,防止粗心的類使用者不小心毀壞,從而減少bug的產生。
關於複用的體現
最簡單的複用某個類的方式就是直接使用該類的一個物件,此外也可以將那個類的一個物件置於某個新的類中,即建立一個成員物件。
- 組合:使用現有的類組成新的類。
- 聚合:如果組合是動態發生的,就叫做聚合。
垃圾回收機制
Java的垃圾回收器被設計用來處理記憶體釋放,垃圾回收器知道物件何時不再被使用,並自動釋放物件佔用的記憶體。這一點的實現,結合了所有物件都是繼承自基類Object以及只能以一種方式建立物件(在堆上建立)這兩個特性。
異常處理
大多數程式語言的錯誤處理機制的問題主要是依賴於程式設計師自身的警惕性,這種警惕性來源於一種共同的約定,而不是程式語言所強制的。Java的異常處理,異常本事是一種物件,它從錯誤點被“丟擲”,並被專門設計用來處理特定型別錯誤的相應的異常處理器“捕獲”。這樣就保證了被丟擲的異常一定會被處理,而不再是隻能退出程式,可以進行校正,並恢復程式的執行。
Java語言特點
可以儲存資料的幾個部分:
- 暫存器(屬於CPU的一部分):程式不能直接控制。
- 堆疊(位於RAM儲存區):Java物件的引用儲存於此。
- 堆(位於RAM儲存區):存放Java物件。
- 常量儲存(只讀儲存區):通常用來儲存常量。
- 非RAM儲存:例如磁碟和流化等。
物件和物件引用的比喻:
遙控器(引用)和電視機(物件),只要握住遙控器就可以保持與電視機的連線,有人想要減小音量時,實際操作的是遙控器(引用),再由遙控器來調控電視劇(物件)。如果想在房間裡四處走走,同時仍能調控電視機,那麼只需攜帶遙控器(引用)而不是電視機(物件)。
String s; //建立了一個引用,並沒有初始化,此時對s進行操作,就會返回一個執行時錯誤。
Java中的基本資料型別都是固定大小的。
在c/c++中合法但是在Java中不合法的情況:
{
int x = 1;
{
int x = 2;
}
}
class關鍵字
一切皆物件,那麼是什麼決定了某一類物件的的外觀和行為呢?Java中是用class這個關鍵字後面緊跟著新型別的名稱。在Java中,你所做的全部工作就是定義類、生產這些類的物件、傳送訊息給這些物件。
類中可以設定兩種型別的元素:
- 欄位(或資料成員):可以是任何型別的物件,也可以是基本型別中的一種。
- 方法(或成員函式)
欄位
若某個成員是基本資料型別,及時沒有進行初始化,Java也會確保它獲得一個預設值:
方法
方法也可以被理解為函式,方法的呼叫可以理解為給物件發訊息。
- 引數列表 :方法的引數列表指定的是要傳遞給方法什麼樣的資訊,在引數列表中必須指定每個所傳遞物件的型別和名字。這裡傳遞的也是引用。
- 返回值:如果一個方法處理訊息後產生了一個值,這個值的型別也需要被指定,如果不許要返回,使用void關鍵字標記即可。
static關鍵字
static主要是用來解決兩種情況:一是隻想為某特定域分配單一儲存空間,而不去考慮究竟要建立多少物件,甚至根本不建立任何物件。二是希望某個變數或方法不與包含它的類的任何物件關聯在一起(不建立物件也能夠呼叫這個方法)。