日期:2014-05-20  浏览次数:20617 次

静态代码段有什么用?
class   A
{
static
                  {
System.out.println( "12313123132123123 ");
}
                  {
                                    System.out.println( "12313123132123123 ");
                  }
int   m=1;
public   void   out()
{
System.out.println( "a ");
}
}

这个类中有一个静态代码段static{};还有一个{},可能叫非静态代码段吧。请问什么时候需要在类中定义这些代码段?有什么用处呢?谢谢

------解决方案--------------------
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变量常用来模拟全局变量/函数
另外就是在模式设计中常用的单例模式和工厂模式