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、?????????????
位運算符都是作用于基本正數類型。該運算符主要是針對硬件編程使用(我們用得不多,)
待續
?
?