一道程式設計題

2022-12-28 19:41:05 字數 852 閱讀 6918

1樓:匿名使用者

首先 感謝了提供了這麼好的一個例子。有點地方令我百思不得其解

由於 private static singleton obj = new singleton();是靜態的,故首先會執行

然後呼叫

private singleton()

因為這個時候jvm還沒有載入到counter1,和counter2.故他們的初始值都是0.都作了加1操作後執行

public static int counter1; 由於沒有給counter1設值,故不會改變它的值所以它就是1

然後執行

public static int counter2 = 0; 這裡又改變couter2的值,設為0,故counter2為0

故執行的順序是1 4 2 3 5

輸出的結果是 1 和 0

其實不難發現輸出什麼樣的結果完全在於private static singleton obj = new singleton();

的位置。樓主可以嘗試把這句話放在兩個變數之後會發現又是另外一種結果。

看來這個虛擬機器還真是難以琢磨。這是一個易錯點。

最後補充一點,這句話很重要

類初始化時首先於每一個靜態欄位開闢一個儲存區([obj],[counter1=0],[counter2=0])。

這個例子比較好!

2樓:墨曼珠

順序14235

輸出obj.counter1==1

obj.counter2==2

先執行到5但是沒執行5,轉到1,1要new一個物件,轉到去執行物件的建構函式,之後返回到1繼續執行2、3,然後再返回到5,結束。

一道C 程式設計題,一道c 程式設計題

多數問題為存心造成 打錯字為主 修改後如下 include include 加一個標頭檔案 為str 函式 using namespace std class binary binary binary char p binary binary int n binary operator binary...

求解一道C語言基礎程式設計題,一道C語言程式設計題求解

舉個例子你就懂了,以16進位制的2abc為例,16進位制轉為10進位制的方法,就是從右到左,依次用該位的數字乘以16的0次方 16的1次方 16的2次方 同樣如果是其它進位制,比如8進位制,那就是8的0次方 1次方等等 之和,比如說2abc轉10進位制,就等於 2abc 16 c 1 b 16 a ...

關於c 一道程式設計題,見下圖,一道C 程式設計題

include include class mystring char str size type thesize size type maxsize public mystring str nullptr thesize 0 maxsize 0 mystring const char s myst...