变量int a;
a=a+4;
System.out.println(a);
不能编译
为什么给int  a的前面加static
a=a+4;
System.out.println(a);
这个就能编译?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-19 21:21:59的汇总数据:
    注册日期:2008-5-23
    上次登录:2008-6-19
    发帖数:1
    结贴数:0
    结贴率: 0.00%
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    很有可能是你在static方法中引用了非static变量
      

  3.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-19 21:26:16的汇总数据:
    注册日期:2008-5-23
    上次登录:2008-6-19
    发帖数:1                  发帖分:20                 
    结贴数:0                  结贴分:0                  
    结贴率:0.00 %        结分率:0.00 %        
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  4.   


    public class Test
    {
        static int a;    public static void main(String[] args)
        {
            a = a + 4;
            System.out.println(a);
        }
    }
    如果你的代码类似这样,那原因是静态方法只能访问静态字段,如果不是这个样子,那请帖代码出来。
      

  5.   

    原因一:  在静态方法中只能访问静态变量;
    原因二:  变量在未初始化就使用。定义为static ,就会有默认值
    所以要加static
      

  6.   

    估计你的方法是static的方法吧
      

  7.   

    改成这样就行了:public class Test
    {
        public static void main(String[] args)
        {
            int a;
            a = a + 4;
            System.out.println(a);
        }
    }
      

  8.   

    或者:public class Test {
        Test() {
            int a;
            a = a + 4;
            System.out.println(a);
      }    public static void main(String[] args)
        {
            new Test() ;
        }
    }
      

  9.   

    public static void main(String[] args){}这个main方法是静态的方法,如果:int a = 4;
    public static void main(String[] args){
      System.out.print(a);
    }
    就不对了,java规定静态方法中是不允许引用非静态变量的如下:
    static int a = 4;
    public static void main(String[] args){
      System.out.print(a);
    }就没事了
      

  10.   

    告诉楼Z...你可以先NEW 一个对象,调用对象的a属性
    另..9L,你确定你的代码没有错误吗?据我所知,局部变量是不会被默认初始化的,你这样不存在初始化问题吗?直接就做+=操作的话