看一小程序,其中一段如下:private static long User_ID;
static{
  try{
    User_ID=getID();
  }catch(getIDException e){
    User_ID=GUEST;
  }
}
***************************************
static{}可以在里面赋值?
它在什么情况下用,与函数有什么区别?

解决方案 »

  1.   

    你的程序其实与下面的程序功能相同:
     
     long temp;
      try{ 
        temp=getID(); 
      }catch(getIDException e){ 
        User_ID=GUEST; 
      } 
    private static long User_ID=temp; 
      

  2.   

    JAVA代码运行原理
    我看书的时候是
    对一个类java运行的步骤
    1先声明带static的变量
    2运行带static的语句块
    3带static的方法
    4平常变量
    5平常方法
    你这样写我觉得应该有问题的 
    静态的可以掉动态的方法吗??
      

  3.   

    static 块只在装入类的时候运行一次,它通常用于初始化static属性。下面是一个例子:public class Count {
     public static int counter;
      static {
       counter = Integer.getInteger("myApp.Count.counter").intValue();
      }
     }
    public class TestStaticInit {
     public static void main(String[] args) {
      System.out.println("counter = "+ Count.counter);
     }
    }
    用如下命令运行:
    java -DmyAppCount4.counter=47 TestStaticInit
    结果如下:
    counter = 47
      

  4.   

    注意上面代码中的两个类应该分别写在两个不同的java文件中。
      

  5.   

    更正一下运行命令:
    java -DmyApp.Count.counter=47 TestStaticInit 
      

  6.   

    静态块:static{}可以在里面赋值? 
    可以 类加载的时候执行它在什么情况下用
    完成一些初始动作的时候 如:jdbc里的加载驱动就可以写到静态块里

    与函数有什么区别? 

    类加载时执行,不需要显示调用.
      

  7.   


    忘说明了, getID()也是一static方法