[Java] Absolute Java (5E) Ch5 重點筆記

Static Method

static method不需要calling object,他跟整個class有關,跟個別的物件無關!

在static method裡面呼叫 non-static method是會有問題的!

在static 裡面要call non-static需要new一個object來call!

non-static method前面在call時 是省略this
static method 前面省略的事class名稱

產生 random number:
這是 0 ~ 1 之間的random

如果要改成 random 的骰子 1 ~ 6

random 產生a ~ z之間的字母

閱讀wiki:

http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

SOLID (object-oriented design)



http://en.wikipedia.org/wiki/Package_principles

Package principles



Wrapper Class
打包基本資料形態成為物件!

Boxing : 打包成物件
像是Integer integerObject = new Integer(42);

Unboxing : 把包好的東西拿出來!
像是 int i = integerObject.intValue();

不過這樣太麻煩了
java 5 之後提供一種auto boxing unboxing的功能
可以直接寫:
Integer integerObject = 42;
int i = integerObject;

好用!





Copy Constructor


Privacy Leaks 的問題!
如果private裡面有其他object F,在copy constructor時如果直接 y = obj.y

 會造成他們指到同一個F,並沒有copy的效果!


修正:

y 的 getter 與 setter 也要複製一份新的 F


Mutable and Immutable


immutable object :
如果把所有setter全部拿掉,只能在constructor時給予值
給完了就沒辦法改private的成員,這種稱為immutable object!
一開始construct 完就不能改了!!

java的string object是immutable的!

所以如果有這種情形:
String a = "abc" + "def";
這個動作是再開一個新的String object來裝"abcdef" 然後delete舊的"abc"等
而不是更改原本的"abc" object!!

 所以:
這裡 Sting 的寫法會不斷的create 物件跟delete物件,效能低
採用 StringBuffer的寫法只有一個物件,效能比較好!



閱讀:
http://docs.oracle.com/javase/7/docs/

http://docs.oracle.com/javase/7/docs/technotes/guides/language/enhancements.html#javase7

Static Import
http://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html

String in switch statement
http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html

Enums





留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking