public class test
static int x,y;
public static void main(string args)
public static void mymethod( )
}
選項:
compiletime error
prints:1
prints:2
prints:3
prints:7
prints:8
解析:
1.jvm載入class檔案時,就會執行靜態**塊,靜態**塊中初始化了乙個變數x並初始化為5,由於該變數是個區域性變數,靜態**快執行完後變被釋放。
2.申明了兩個靜態成員變數x,y,並沒有賦初值,會有預設出值,int型別為0,
3.執行x--操作,變數單獨進行自增或自減操作x--和--x的效果一樣,此時x變為了-1
4.呼叫mymethod()方法,在該方法中對x和y進行計算,由於x和y都是靜態成員變數,所以在整個類的生命週期內的x和y都是同乙個
5.y=x++ + ++x可以看成是y=(x++)+(++x),當++或者--和其它變數進行運算時,x++表示先運算,再自增,++x表示先自增再參與運算
所以就時x為-1參與運算,然後自增,x此時為0,++x後x為1,然後參與運算,那麼y=-1+1就為0,此時x為1
6.執行並列印x+y + ++x運算方式和第5步相同,最後計算結果就為3.
i 與 i的區別
今天在寫題的時侯在 i與i 上遇到了麻煩,具體就是我在寫乙個迴圈語句時因為沒有弄清楚i 與 i的區別而導致的錯誤。之前對於i 與 i的使用都只侷限於如下方式 for j 2 j 9 j for j 2 j 9 j 這樣使用好像兩者並沒有什麼區別。然而當我像下面這樣用時卻出了問題 for j i,t ...
談談i 與 i的區別
在通常情況下i 與 i是一樣的,可以等價替換的,例如在for迴圈裡 for int i 0 i 10 i 與for int i 0 i 10 i 是一樣的 但是也用不同的地方 int flag 0 for int i 0 i 10 i num flag i 先賦值 後flag加一 與for int ...
筆記 i 與 i的區別
i 是先進行了賦值在自增 首先i 1因為是先賦值所以會將1賦值給j,所以j 1i 自增,也就是i 2,會將值賦給i,所以i 2int i 1 int j i system.out.println j j 輸出 j 1 system.out.println i i 輸出 i 2 i是先自增在進行賦值 ...