Java:这样为什么会报错呢?main函数是个静态方法,不能在其中声明静态变量么?

class Test {
public static void main(String[] a){
static final byte CONN_FLAG = 18; //报错
System.out.println(CONN_FLAG);
}
}

只有类才存在静态的变量 方法只能对静态变量的操作 不能在方法内试图定义静态变量,否则的话会抛出编译错误。静态变量的本意是为了让所有的对象共享这个变量,如果在方法里面定义静态变量的话就存在逻辑错误了,也达不到你想要目的. 因为在方法中定义静态变量根本没有他的任何意义. 任何对象都有自己的方法,即使是静态方法,方法内的变量也是在方法调用时候才开始分配内存,所以想给成静态的在逻辑上存在问题
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-12
static类型变量属于在类加载时进行定义初始化的,而main函数中的相关变量是在运行时才会声明,在main函数中可以引用static类型变量,但不可在里面进行声明。
第2个回答  2014-01-12
静态变量不能写到方法里面的,正确的写法
class Test {
static final byte CONN_FLAG = 18;
public static void main(String[] a){ System.out.println(CONN_FLAG); }}追问

静态变量和方法都是在类加载的时候就存在了,如果是实例变量不能写在main函数中我还能理解,静态变量也不能就不太好理解了

追答

因为写在方法里的变量是内部变量,是不能被其它方法用的,只有调用方法的时候那个变量才会临时加载,所以方法内创建的变量不能是静态的

相似回答