java對象的作用域

java對象不具備和基本類型一樣的生命週期.當你用new創建一個java對象時,它可以存活於作用域之外.

例如代碼如下:

{

        String name=new String("hello world");

} //end of cope

引用name在作用域終點就消失了.然而:name指向的String對象仍繼續佔據內存的空間.在這一小段代碼中,我們似乎無法想象再訪問這個對象,因爲對它唯一的引用已超出了作用域的範圍.

但是我們可以通過傳遞對象的引用,傳遞給需要的方法

{

          String name=new String("hello world");

          test(name);

}

public void test(String name){

}

這樣這個對象又可以再其他地方使用了.

那麼事實證明,由new創建的對象,只要你需要,就會一直保留下去.這樣,需要C++編程問題在Java中就會完全消失.在C++中,最難的問題視乎在於:程序員並不能從語言本身中獲得任何幫助,以確保在需要調用對象時,該對象仍可用.更重要的是:在C++中,一旦使用完對象後,你必須確保要銷燬對象.


這樣便帶給我們另一個問題.如果java讓這個對象繼續存在,那麼靠什麼才能防止這些對象填滿內存空間,今兒阻塞你的程序呢?

java有一個垃圾回收器,用來監視用new創建的所有對象,並辨別那些不會再被引用的對象.隨後,釋放這些對象的內存空間,並提供其他新的對象使用.也就是說,你根本不需要擔心內存會後的問題.你只需要創建對象,一旦不再需要,他們就會自動消失.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章