在C/C++中,數組其實就是一快內存,如果在程序中訪問了數組區塊之外的地域或者在初始化之前便使用,會導致許多錯誤的發生。與C/C++不同的是,Java更注重安全性,它保證數組一定會被初始化(當產生references的數組時,其中每個references皆會被設定為null這一特殊值,Java將其視為“不指向任何對象”。在使用任何reference前,你必須先將某個對象指派給它),并使每個數組額外多出一點空間,并在執行時期對對數組索引值進行檢查,從而使程序員無法超越范圍。
2.生存空間(Scoping):
C/C++具備將較大的生存空間中的變量遮蔽起來的能力:
例如:
{
int x = 1;
{
int x = 2;
}
}
即使上面這段程序在C/C++中合法,在Java總不能這樣做,編譯器會認為X已經被定義過了,Java認為這樣容易導致對程序的誤解和混淆。在C++中,用完對象后,必須將其摧毀,否則其可能滋生臭蟲,可什么時候才是最佳時機呢?圍繞在變量壽命上的種種疑問,Java提供了解決方案,Java中有一種所謂的(垃圾回收器)garbage collector,機制,它會逐一檢視所有通過new產生的對象,當不在有任何reference指向它們的時,將釋放這些對象的內存,使程序員不必操心內存回收的問題,因為所有的對象,在你不需要他們的時候,將自動消失。
文章來源于領測軟件測試網 http://www.kjueaiud.com/