class A
{
static
         {
System.out.println("12313123132123123");
}
         {
                  System.out.println("12313123132123123");
         }
int m=1;
public void out()
{
System.out.println("a");
}
}这个类中有一个静态代码段static{};还有一个{},可能叫非静态代码段吧。请问什么时候需要在类中定义这些代码段?有什么用处呢?谢谢

解决方案 »

  1.   

    static{}方法内部的代码只能访问类中的static属性或方法,不能方法类中非static属性或方法
      

  2.   

    static{}初始化类的静态属性的状态{} 初始化对象属性的状态
      

  3.   

    static{}初始化类的静态属性的状态只初始化一次
      

  4.   

    缓存的根基
    ----------------------
    言简意骇。
    具体说一种用法:static{}中可以进行数据库连接的初始化
      

  5.   

    static成员变量或者static函数
    是不随着对象实例化的,是面向类的比如有一个类A
    class a{
     public static int int_a = 0;
     public int int_b = 1;
     
     public static void test1(){
      System.out.println(int_a);
     } public void test2(){
      System.out.pringln(int_b);
     }
    }这里声明了一个类A,有2个成员函数和2个成员变量
    标记为static的是在类编译阶段生效的
    不标记的是在对象编译阶段生成的如果这样调用//不声明对象,直接调用static方法
    A.test1();//声明2个对象
    A test_a = new A();
    A test_b = new A();//static变量相当于这个类的全局变量,只初始化一次
    //普通变量每次对象NEW时都创建一个副本
    test_a.int_a++;   //此时int_a为1
    test_a.int_b++;   //此时int_b为1
    test_a.test1();
    test_a.test2();test_b.int_a++;   //此时int_a为2
    test_b.int_b++;   //此时int_b为1
    test_b.test1();
    test_b.test2();基本上就是这个意思static变量常用来模拟全局变量/函数
    另外就是在模式设计中常用的单例模式和工厂模式