Topic: 一个关于静态初始化的问题

  Print this page

1.一个关于静态初始化的问题 Copy to clipboard
Posted by: liyan5953
Posted on: 2004-09-30 11:28

请教一下静态初始化器的作用和在定义静态变量是直接付初值有什么区别?
看看下面两段代码运行结果为什么会一样?
public class st{
  public static void main(String arg[]){
  liyan ly1=new liyan();
  System.out.println(ly1.a);
  System.out.println(ly1.m);
  liyan ly2=new liyan();
  System.out.println(ly2.a);
  System.out.println(ly2.m);  
  }
}
class liyan{
  static{a=1;}
  static int a;
  static int m=a++;
}
和public class st{
  public static void main(String arg[]){
  liyan ly1=new liyan();
  System.out.println(ly1.a);
  System.out.println(ly1.m);
  liyan ly2=new liyan();
  System.out.println(ly2.a);
  System.out.println(ly2.m);  
  }
}
class liyan{
  
  static int a=1;
  static int m=a++;
}

2.Re:一个关于静态初始化的问题 [Re: liyan5953] Copy to clipboard
Posted by: aleel_008
Posted on: 2004-09-30 14:10

静态赋值固然是一样的,但是如果在类导入(不是实例化时)后执行一些初始语句就体现出静态语句块的作用了

3.Re:一个关于静态初始化的问题 [Re: liyan5953] Copy to clipboard
Posted by: zqfdu
Posted on: 2004-09-30 14:50

楼主能不能解释一下为什么觉得两段代码运行结果不一样呢?

4.Re:一个关于静态初始化的问题 [Re: liyan5953] Copy to clipboard
Posted by: Jawen
Posted on: 2004-09-30 16:41

class liyan{
static{a=1;}
static int a;
static int m=a++;
}
可以这样写吗?我觉得还是后面这中写法比较正规点吧


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923