Thinking in java review
1、? Java? 中所有的 member function 都是動態綁定
2、? Java 中所有的對象都是通過 new 來動態產生
3、? 所有的容器 (collection) 和 Object array( 對象數組 e.g String []str=new String[10]) 內都包含都是對象的 reference
4、?
在
java
中,
java
編譯器有責任產生“將
stack
指針前后移動“的程序代碼,所以
它必須能夠完全掌握它所編譯的的程序中“存在
stack
里頭的所有數據的實際大小和存活時間“,
如此一來便會限制程序的彈性。
由于這個限制,盡管我們可以將對象的
reference
存儲與
stack
內,但卻不能將一般的
java
對象放在
stack
中
特例:(
primitive
types
)
基本型別會經常被使用,如果使用
new
來產生此類極小,極簡單的變量,會因“
new
將對象置于
heap
之上“
而效率不好。因此對于此類變量
java
采取
c/c++
的方式,也就是不用
new
分配器空間,而是產生一種所謂的
”automatic
“變量,存于
static
中
5、? 當你產生某個存儲對象的數組,真正產生的是個存儲 reference 的數組。此數組建立之后,其中的每一個 reference 都會被自動設為某個特殊的值 null,
6、? { String s=new String(“ddd”);} s 這個 reference 會在生存空間之外消失無蹤,但是, s 先前所指的那個 String 對象仍然會繼續占用內存
7、? Class 內的基本型別變量都有初值,但是在函數內的 local variable 是沒有初值的
8、? Java 中,所有傳遞的對象的場合,傳遞的都是對象的 reference.
9、? Return ; 說明這個函數運行結束,返回到其調用函數。 Return 2 :返回一個數 2 給調用者,同時結束本函數的運行。
10、????????????? Class 內的 non-static data(state) 和 method , 都是和特定的對象綁定的,一般情況下,你的產生某個對象,再通過該對象取用其數據和函數。所以 non-static 數據 / 函數必須知道他們隸屬于哪一個對象,才有辦法運行 .static 函數內不能使用 non-static 數據和函數
11、?????????????
(object1= = object2 )
兩個對象的
reference
的
= =
比較得是兩個對象的內存的地址。所以我們不能使用
= =
來測試兩個對象的內容是否相等。如果想測試對象的內容是否相等,應該使用
equal(),
任何一個對象都擁有這個函數。不過你自己的
class
需要
override
這個函數,否則默認的
equal()
函數是還是比較的兩個對象的內存地址。
Java
標準程序庫中的大多數
class
都
override
了
equal(),
所以他們都會比較對象的內容是否相等。
12、????????????? 位運算符都是作用于基本正數類型。該運算符主要是針對硬件編程使用(我們用得不多,)
待續
posted on 2006-06-27 17:40 junhong 閱讀(1805) 評論(0) 編輯 收藏 所屬分類: java技術