[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)
http://en.wikipedia.org/wiki/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
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
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
留言
張貼留言