该如何修改????
public class static_kuai
{
static String stra;

{
stra="init";
System.out.println("init~");
}

static
{
stra="static";
System.out.println("static~");
} public static_kuai(){
stra="Constructor";
System.out.println("Constructor~");
}

public void showMsg(){
System.out.println(stra);
} public static void main(String[] args){
static_kuai s=new static_kuai();
s.show();//提示错误!!!!!!!!!!!!!!!!!!
}}

解决方案 »

  1.   

    public class static_kuai
    {
    static String stra;

    {
    stra="init";
    System.out.println("init~");
    }

    static
    {
    stra="static";
    System.out.println("static~");
    } public static_kuai(){
    stra="Constructor";
    System.out.println("Constructor~");
    }

    public void showMsg(){
    System.out.println(stra);
    } public static void main(String[] args){
    static_kuai s=new static_kuai();
    s.showMsg();//。
    }}
      

  2.   

    关于初始化块,静态块,构造函数的先后调用顺序如下:
    1.先初始化静态数据,后初始化非静态数据。
    2.静态初始化只有在必要时才进行,如果不创建static_kuai对象,也不引用static_kuai.stra,那么static_kuai.stra永远不会被初始化。
    3.静态数据的初始化一般在定义时进行,或者放在初始化块中进行,但不应该放在构造函数中,因为静态数据只被初始化一次,为所以对象共享。可以这样改动:
    删除第二个初始化块和构造函数中的初始化语句。