[OCAJP]靜態變數與物件變數


Given:

What is the result?

A.

3 4 5 6

B.

3 4 3 6

C.

5 4 5 6

D.

3 6 4 6

題解

第7~8行,宣告並實體化出了x1和x2這兩個X物件。X物件的變數成員有物件變數j,和宣告時用了static修飾的靜態(類別)變數i。兩種變數的差別在於,類別變數只會有一個存在,其記憶體空間並不會因為類別被實體化而多產生出來,也就是說,x1和x2的i變數是同一個變數,實際指到的記憶體空間是一樣的。

第9~12行,將不同的值指派給x1和x2物件的變數i和變數j。由於變數i是類別變數,因此「x1.i」和「x2.i」都可以改寫成「X.i」。

所以到最後,X.i為5,而x1.j為4、x2.j為6,輸出結果為「5 4 5 6」。

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章