Thinking in Java: 2.對象

1.java對象存儲在什麼地方?

堆:用於存放所有Java對象,堆不同於堆棧的好處是:編譯器不需要知道存儲的數據在堆裏存活多長時間。當需要對象時new一個就行,當然靈活性的代價是:存儲分配和清理需要更多時間。

2.基本類型

boolean、char、byte、short、int、long、float、double,new將對象存放於堆裏,但以上不用new來創建,而是創建一個並非是引用的自動變量,這個變量直接存儲值,並置於堆棧中。高精度數字:BigInteger和BigDecimal。

3.java靠什麼防止對象填滿內存空間?

java垃圾回收器,用來監視用new創建的所有對象,並分辨哪些不會再被引用的對象,隨後釋放這些對象的內存空間。消除了內存泄漏的問題。

4.類

關鍵字:class,類包含字段(數據成員)和方法。若類的某個成員是基本數據類型,即使沒有進行初始化,java也會給他一個默認值,注意:當變量作爲類的成員使用時,java才確保給定其默認值,並不適用於“局部”變量(即並非某個類的字段),若在某個方法中定義:int x,此x是沒有默認值的。

                     基本類型               默認值

                     boolean                 false

                      char                       null

                   byte、short               0

                   int、long

                   float                           0.0f

                   double                      0.0d

5.static關鍵字:

即使沒有創建對象,也能夠調用,要用static。滿足兩方面需求:當聲明一個事物是static時,意味着:1.這個域或方法不會與包含他的那個類的任何對象實例關聯在一起。2.爲某特定域分配單一存儲空間,而不去考慮究竟要創建多少對象,甚至根本就不創建任何對象。例如:

class StaticTest{

       static int i=47;

}

即使創建兩個對象,StaticTest.i也只有一分存儲空間,兩個對象共用一個i.在看下面代碼:

StaticTest st1= new StaticTest();
StaticTest st2= new StaticTest();

這裏,st1.i與st2.i指向同一存儲空間,因此具有相同的值47.

引用static變量的方法:1.通過對象引用,例st2.i;也可以通過類名直接引用,StaticTest.i++(推薦)靜態方法同靜態變量類似,不再多述。

6.public static void main(String[] args){}

我們程序中並未用到args,但java編譯器要求必須這麼做,因爲args用來存儲命令行參數。


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