静态数据初始化 你 真的了解了吗?构造方法的初始之后。。我又做错了,太粗心了

  下面的程序输出什么呢?  考虑下哦。。。。

public class Test {
    
public static final Test TEST = new Test();
    
private final int belt;
    
private static final int CURRENT_YEAR = Calendar.getInstance().get(Calendar.YEAR);
    
    
public Test(){
        belt 
= CURRENT_YEAR - 1930;
    }

    
public int getBelt(){
        
return belt;
    }

    
public static void main(String []args) throws Exception{
        System.out.println(TEST.getBelt());
    }

}

可能你觉得应该是当前年- 1930, 例如:今年是2009,2009-1930= 79,运行结果真的是这样吗?
你运行下,额,奇怪,居然是 -1930,  额,为什么呢??

  原来 首先其静态域 被设置为缺省值, TEST先设置为null, belt设置为0 , 然后TEST构造器计算出来,但我们已经初始化belt了,
belt被设置为final, 所以忽略了。。。 
再来看下 下面一个简单的例子,刚开始做的时候不仔细,哎,, 我错了。。哎~!~ 希望大家不要跟我一样啊。
 1 class Point {
 2     protected final int x, y;
 3     private final String name;
 4 
 5     Point(int x, int y) {
 6         this.x = x;
 7         this.y = y;
 8         name = makeName();
 9     }
10 
11     protected String makeName() {
12         return "[" + x + "," + y + "]";
13     }
14     
15     public final String toString(){
16         return name;
17     }
18 
19 }
20 
21 public class ColorPoint extends Point {
22     private final String color;
23     
24     ColorPoint(int x, int y, String color){
25         super(x,y);
26         this.color = color;
27     }
28     protected String makeName() {
29         return super.makeName()+":"+color;
30     }
31     
32     public static void main(String[] args) {
33         System.out.println(new ColorPoint(1,2,"abc"));
34     }
35     
36 }

运行结果:  [1,2]:null
程序从main启动,然后到 25行,super(x,y);   之后 到 第 8行   name = makeName();  再之后29行, return super.makeName()+":"+color;
这里,方法被子类重载了,运行到26行  this.color = color;  最后结束, 当然输出: [1,2]:null  

posted on 2009-04-15 19:28 胡鹏 阅读(228) 评论(1)  编辑  收藏 所属分类: java基础

评论

# re: 静态数据初始化 你 真的了解了吗? 2009-04-16 11:29 重庆理工小子

final是常量,不是静态数据。
静态是 static
对于这个初始化,常量和变量的申明,可以看看我的这篇文章

http://www.blogjava.net/shenang/archive/2009/04/13/265279.html  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

统计

常用链接

留言簿(3)

随笔分类

随笔档案

agile

搜索

最新评论

阅读排行榜

评论排行榜