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

求高手解答
public class test{
  int a=123;
  final int b=11111;
  public static void main(String[] args){
  int c=-123;
  System.out.println("a输出的值是:"+a);
  System.out.println("b输出的值是:"+b);
  System.out.println("c输出的值是:"+c);

}
}

报错test.java:6: 无法从静态上下文中引用非静态 变量 a
  System.out.println("a输出的值是:"+a);
                               ^
test.java:7: 无法从静态上下文中引用非静态 变量 b
  System.out.println("b输出的值是:"+b);
                               ^
2 错误


为什么全局变量必须是静态变量,我要如何让全局变量成为实例变量呢??求高手解答,谢谢。。

------解决方案--------------------
int a=123;
  final int b=11111;

把每个变量都定义成static的就可以了。
改成static int a =123;
 static final int b=11111;
------解决方案--------------------
java里的变量要么是静态变量(属于某个类),要么是实例变量(属于某个对象)。
如果要实现全局变量,可以把变量改为静态的:
public class test{
  static int a=123;
  static final int b=11111;
  public static void main(String[] args){
  int c=-123;
  test t=new test();
  System.out.println("a输出的值是:"+a);
  System.out.println("b输出的值是:"+b);
  System.out.println("c输出的值是:"+c);

}
}
或者使用单例模式构造实例。
------解决方案--------------------
或者
改成
test t = new test();
System.out.println("a输出的值是:"+t.a);
  System.out.println("b输出的值是:"+t.b);