標籤:編程導論 thinking in java
《Think in java·第 4 章初始化和清除》
本章介紹對象的建立和消除。
4.1 用構建器自動初始化 【You can imagine creating a method called initialize( ) for every class you write.】一句話的正確解讀是,你(男生)將自己想象成為女生。所以,我專門用一節 《 編程導論(Java)·2.3.6 構造器不是方法》強調這一點。
4.2 方法過載這一段解釋非常經典,按照人們的日常生活介紹重載。同時,翻譯非常xx。【但若強制象下面這樣說,就顯得很愚蠢:“襯衫洗 襯衫”、“車洗 車”以及“狗洗 狗”。】吼吼n4.2.1 區分過載方法
4.2.2 主類型的過載(涉及基本類型的過載) 自動類型轉變與重載。事實上,參考型別也一樣。
4.2.3 返回值過載
4.2.4 預設構建器
4.2.5 this 關鍵字 這一段繞口。 this.
1. 在構建器裡調用構建器 this()
2. static 的含義 【有些人抱怨static 方法並不是“物件導向”的,因為它們具有全域函數的某些特點;利用static 方法,我們不必向對象發送一條訊息,因為不存在this。這可能是一個清楚的自變數,若您發現自己使用了大量靜態方法,就應重新思考自己的策略。然而,static 的概念是非常實用的,許多時候都需要用到它。所以至於它們是否真的“物件導向”,應該留給理論家去討論。事實上,即使Smalltalk 在自己的“類方法”裡也有類似於static 的東西。】概念是第一性的。
4.3 清除:收尾和垃圾收集寫得不順暢,跳過去。4.4 成員初始化局部變數必須顯式初始化。在《 編程導論(Java)·2.2.3 變數的聲明模型》中一筆帶過,是不是太忽略了?【Java 盡自己的全力保證所有變數都能在使用前得到正確的初始化。若被定義成相對於一個方法的“局部”變數,這一保證就通過編譯期的出錯提示表現出來。……】值得借鑒。4.4.1 規定初始化 即我所使用的“賦值初始化”階段
4.4.2 構建器初始化 講解的順序不好。初始化塊與構造器一起講;對象的初始化三步曲,由預設初始化、賦值初始化和執行構造器(含初始化塊)代碼構成。靜態變數(non-final static variable)的初始化是假三步曲。
三部曲 Vs. 三步曲 (1.3.2中改為三部曲,2.3.4中三步曲沒有改。長知識了)4.5 數組初始化這裡講數組的定義、聲明、初始化等。很不喜歡Think in java時時刻刻拿C、C++說事,這一節開始就開始叨叨絮絮C、C++。What if you don’t know how many elements you’re going to need in your array while you’re writing the program?這個問題如同問“
如果你想吃又沒有大餅怎麼辦”一樣,太誘惑人了。
4.5.1 多維陣列 即數組的數組