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

求助java静态代码块内变量的使用
public class Practice
{
static String string = "static filed";
static {
String strings = "static block";
static void show(){    //这是什么错误,求解
System.out.println("a method in static block");
}
}
public static void say() {
System.out.println(Practice.string);
// System.out.println(strings);  如何使用strings?
}
public static void main(String[] args) {

Practice.say();

}

}

------解决方案--------------------

public class Practise {
    static String string = "static filed";
    static {
        String strings = "static block";
    }
    
    static void show(){    //静态方法不可声明在静态块中
        System.out.println("a method in static block");
    }
    
    public static void say() {
        System.out.println(Practise.string);
        // strings 在静态块中,属于方法内的变量,是局部的,外部访问不到
        // System.out.println(strings);  如何使用strings?
    }
    public static void main(String[] args) {
        Practise.say();
    }
}

------解决方案--------------------
静态代码块是类加载时自动执行的,方法不管是不是静态,都是需要调用的,如果你写在静态代码块里,外部怎么调用?
写静态方法直接写在类中就行啦。如果你要在静态代码块里写代码,不用写方法,直接写语句就行了。
一句话:写了方法,我们是为了调用它,你这么写就违背了我们设计的初衷。