JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) [Re:Yoshi]
T55555

Java, Ruby, Haskell

版主

發文: 1026
積分: 24
於 2003-09-15 00:43 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list

可能是我等級太低,反組譯 Java Bytecode也看不太出來其中的涵義…

compare source code and javap's output, it is easy to understand what's going wrong...
1
2
3
4
5
6
class Singleton extends java.lang.Object { 
  public static int counter1; 
  public static int counter2; 
  public static Singleton getInstance();
  static {};
}

this code defines counter1, counter2, method getInstance() and then call static{},
at this time counter1 == counter2 == 0

OK , now let's move on static{} call
1
2
3
4
5
6
7
8
Method static {} 
  0 new #5 <Class Singleton> 
  3 dup 
  4 invokespecial #6 <Method Singleton()> 
  7 putstatic #4 <Field Singleton obj> 
  10 iconst_0 
  11 putstatic #3 <Field int counter2> 
  14 return

this is because "private static Singleton obj = new Singleton();"
so it new object (0) and call constrcutor(4) and save the object to obj (7)
After (4) counter1==counter2==1;
Now, the problem, because we have "public static int counter2 = 0;"
declare and intialize, declare already did, now it is initialze part,
the line (10) is initialize the static the counter2 to zero
...
etc
Got the light ?


T55555 edited on 2003-09-15 00:47
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
12299 [精華] [轉錄]全世界所有程式員都會犯的錯誤(初始化) Yoshi 3886 2003-09-14 19:23
9887 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) UndeadJ 1000 2003-09-14 23:40
10260 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) T55555 1133 2003-09-15 00:43
9514 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) UndeadJ 111 2003-09-15 01:29
10213 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) T55555 1500 2003-09-15 02:16
9473 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) Yoshi 307 2003-09-15 16:10
9286 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) UndeadJ 134 2003-09-15 17:17
9335 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) Yoshi 131 2003-09-15 17:22
9311 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) UndeadJ 338 2003-09-15 17:46
9300 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) Yoshi 288 2003-09-15 17:54
9314 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) UndeadJ 237 2003-09-15 17:55
9355 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) UndeadJ 13 2003-09-15 02:33
9393 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) T55555 1013 2003-09-15 21:18
10188 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) Duncan 2561 2003-09-15 22:55
9276 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) Yoshi 247 2003-09-16 02:30
9207 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) Yoshi 537 2003-09-16 02:40
9243 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) T55555 1008 2003-09-16 03:04
9280 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) T55555 928 2003-09-16 03:14
9296 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) Yoshi 198 2003-09-16 03:29
9886 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) Duncan 3196 2003-09-16 11:03
9610 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) T55555 1135 2003-09-16 22:42
9732 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) Duncan 256 2003-09-17 01:31
» JWorld@TW »  Java SE 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8