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]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2003-09-16 11:03 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Yoshi wrote:
我有二個問題想要請教大家
1.
1
static { ....} 這稱為class constructor
1
public ClassName() {...} 這稱為instance constructor
1
{ ...} 那這個應該稱做什麼? 我以為這個是instance constructor...


2.上文提到編繹器會自動將instance field移到instance constructor之內
指的是1.中提到的第二個? 這要怎麼移啊....? 總覺得是第三個比較合理耶....

thx.


我當初第一次知道有 {} 這種 instance initializer 的用法時,真是有點驚訝,Java compiler 糖未免太多了一點。就像 T55555 說,instance initializer 的部分其實會成為 constructor 的一部份。(所以你說 field initializer 會移到 instance initializer 也沒錯,但最終而言,instance initializer 其實也是"各個" constructor 的一部份。)

比較需要注意的是,有寫初值的 field 宣告和 instance initializer 的真正的動作是在 constructor,編譯器會將這些動作一一寫到每一個 overloading constructor 裡,這些動作的順序是 field initializer, instance initializer > constructor。field initialzer 與 instance initializer 則是依照 definition 在 source code 的先後順序。

另外 instance/class initializer(block) 是可以拆開寫的,編譯器會將他們合併在一起產生 instructions 在 constructor/class constructor(initializer), respectively。如果拆開成好幾個 block 來寫,block 的順序會是他們出現的 constructor/class constructor 裡的順序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// com.sun.image.codec.jpeg.JPEGQTable
package com.sun.image.codec.jpeg;
 
public class JPEGQTable {
 
  /** Quantization step for each coefficient in zig-zag order */
  private int quantval[];
 
  /** The number of coefficients in a DCT block */
  private static final byte QTABLESIZE = 64;
  
  /** 
   * This is the sample luminance quantization table given in the
   * JPEG spec section K.1, expressed in zigzag order. The spec says
   * that the values given produce "good" quality, and when divided
   * by 2, "very good" quality.
   */
  public static final JPEGQTable StdLuminance = new JPEGQTable();
  static {
    int [] lumVals = {
      16,   11,  12,  14,  12,  10,  16,  14,
      13,   14,  18,  17,  16,  19,  24,  40,
      26,   24,  22,  22,  24,  49,  35,  37,
      29,   40,  58,  51,  61,  60,  57,  51,
      56,   55,  64,  72,  92,  78,  64,  68,
      87,   69,  55,  56,  80, 109,  81,  87,
      95,   98, 103, 104, 103,  62,  77, 113,
      121, 112, 100, 120,  92, 101, 103,  99
    };
    
    StdLuminance.quantval = lumVals;
  }
 
  /** 
   * This is the sample luminance quantization table given in the
   * JPEG spec section K.1, expressed in zigzag order. The spec says
   * that the values given produce "good" quality, and when divided
   * by 2, "very good" quality.
   */
  public static final JPEGQTable StdChrominance = new JPEGQTable();
  static {
    int [] chromVals = {
      17,  18,  18,  24,  21,  24,  47,  26,
      26,  47,  99,  66,  56,  66,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99,
      99,  99,  99,  99,  99,  99,  99,  99
    };
    StdChrominance.quantval = chromVals;
  }
    
 
  /** 
   * Constructs an empty quantization table. This is used to create
   * the Std Q-Tables.
   */
  private JPEGQTable() {
    quantval = new int[QTABLESIZE];
  }
    // ....略
}



Duncan edited on 2006-04-11 17:41
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
9312 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
9887 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) Duncan 3196 2003-09-16 11:03
9610 Re:[轉錄]全世界所有程式員都會犯的錯誤(初始化) T55555 1135 2003-09-16 22:42
9733 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