该如何修改????
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();//提示错误!!!!!!!!!!!!!!!!!!
}}
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();//提示错误!!!!!!!!!!!!!!!!!!
}}
{
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();//。
}}
1.先初始化静态数据,后初始化非静态数据。
2.静态初始化只有在必要时才进行,如果不创建static_kuai对象,也不引用static_kuai.stra,那么static_kuai.stra永远不会被初始化。
3.静态数据的初始化一般在定义时进行,或者放在初始化块中进行,但不应该放在构造函数中,因为静态数据只被初始化一次,为所以对象共享。可以这样改动:
删除第二个初始化块和构造函数中的初始化语句。