是一个STATIC修饰的方法内部,不能调用非静态的变量和方法,比如:
public class T{
public String a = "访问到a";
public static String b = "访问到b";
public static void test() {
System.out.println(a);// 这样不行,因为a非静态
System.out.println(b);// 这个可以。
}
}其实很容易理解的,静态方法和变量只有一份,属于类,不需要实例化对象就可以访问,
但是非静态的一定要实例化对象,所以,在静态方法中调用非静态的显然不能,因为你没有
实例化对象就根本不存在该非静态。这里你要区别下,如果你在静态方法中实例化一个对象,那么当然是可以访问这个对象的所有可访问的东西的,比如,我们改下上面的test方法: public static void test() {
T tt = new T();
System.out.println(tt.a);// 实例化了对象,当然可以访问它了。^_^
}
public class T{
public String a = "访问到a";
public static String b = "访问到b";
public static void test() {
System.out.println(a);// 这样不行,因为a非静态
System.out.println(b);// 这个可以。
}
}其实很容易理解的,静态方法和变量只有一份,属于类,不需要实例化对象就可以访问,
但是非静态的一定要实例化对象,所以,在静态方法中调用非静态的显然不能,因为你没有
实例化对象就根本不存在该非静态。这里你要区别下,如果你在静态方法中实例化一个对象,那么当然是可以访问这个对象的所有可访问的东西的,比如,我们改下上面的test方法: public static void test() {
T tt = new T();
System.out.println(tt.a);// 实例化了对象,当然可以访问它了。^_^
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货