[code=Java]class A
{
int a;  //分配在堆内存??
static int b;  //分配在静态存储区??
public void m()
{
int c;   //分配在堆栈??
static int d;  //分配在静态存储区??(非法的表达式开始??出错了??)
}
}code]

解决方案 »

  1.   

    static 修饰的变量,在类声明而没有实例化时就存在了,可这时候方法m还没有呐
      

  2.   

    方法里面修饰符只能用final,其他任何修饰符都不可以用
      

  3.   

    class A 

    int a;  //分配在栈
    static int b;  //分配在静态存储区
    public void m() 

    int c;  //分配在栈 
    static int d;  //分配在静态存储区??(这个要赋值。。如果在方法外。他会给你一个defalut值。) 

    }
      

  4.   

    如果方法里面定义局部内部类也只能用final 和abstract
      

  5.   

    class A 

    int a;  //分配在堆内存?? ------------>分配在栈里
    static int b;  //分配在静态存储区?? ------------->数据区
    public void m() 

    int c;  //分配在堆栈?? ----------------->分配在栈里
    static int d;  //分配在静态存储区??(非法的表达式开始??出错了??) ---->局部变量,还是静态的,要赋初值,在方法外的话,会自动赋初值

    }
      

  6.   

    你看看 静态变量和  局部变量~ static 修饰局部变量~!
      

  7.   

       局部变量不能用static修饰,局部变量要么没有修饰符,如果要修饰,只能用final
      

  8.   

        接上面,因为static是在类加载的时候就分配空间的,而局部变量是在方法调用的时候才初始化的,所以局部变量不能用static修饰.
      

  9.   

    不是说实例化这个类时
    类产生的对象都在堆内存里吗???
    那么类的静态数据域就应该在堆里,而不是栈里。
    class A 

    int a;  //分配在栈  》》》》改成堆内存才对,是不是??
    static int b;  //分配在静态存储区
    public void m() 

    int c;  //分配在栈 
    static int d;  //分配在静态存储区??(这个要赋值。。如果在方法外。他会给你一个defalut值。) 

    }
      

  10.   

    静态变量是在类被装载的时候被分配了空间,静态变量是属于类的。所以在方法中定义一个静态变量是不行的,不管你是否赋值。
    临时变量是分配在栈中的。
    当一个类被初始化的时候系统会给没赋值的变量一个初始值0;对象的话就是null。
      

  11.   

    局部变量不能用static修饰,会报错
      

  12.   

    static 是一个与类有关的修饰词,在c++中,它用来修饰类的成员,实际上用它是一种机制,被它修饰的成员会成为类及对象共有的。换句话说就是c++用它来实现一种数据共享的机制。 在Java中与c++的基本相同,被static修饰的成员是类级别的(类也能被修饰)。但它不能修饰局部变量。c#中被它修饰的成员只能用类名去访问。