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函数中我还能理解,静态变量也不能就不太好理解了

追答

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

以下java代码40行41行报"无法从非静态方法中引用静态方法"为什么怎么改...
因为main()方法是 static 修饰的静态方法,所以在他的里面不能运行非静态的方法或者把非静态的值赋给它里面的静态变量,出现上述情况就会报你说的错误。解决方法就是在方法前面加static,比如:public static void constractor(){} 希望对你有帮助!

在类的方法中可以定义静态变量吗?
都不行,java虚拟机的运行机制是在第一次调用类的任意一个静态方法(构造函数默认也是静态方法)之前就必须给所有的静态变量在内存中分配地址。比如说new的时候所有的静态变量的值应该已经设定好了,而方法内部的变量肯定是调用方法的时候才分配地址,这样一来就坏了规矩,java虚拟机没法工作了。所以语法里...

java错误 方法 main 不能声明为“静态”;只能在静态类型或顶级类型中才...
StrageryA 和 AverageStore这两个类没有闭合缺少了},附修改后的代码 import java.util.Arrays;import java.util.Scanner;interface Stragery{ double computerAverage(double[] a);}class StrageryA implements Stragery{ public double computerAverage(double[] a){ int sum=0,i; for(i...

java为什么这个方法会报错呀?
你在static方法里调用了一个非static的方法,所以会报错。静态方法里只能调用静态方法和引用静态变量,你把swap加上static就对了

Java中,在main方法中定义如下变量,结果报错,static float b = 10.98f...
方法内的变量为局部变量,它的作用域是整个方法体,也就是说,当方法结束的时候该变量的空间也会被释放掉。而使用static修饰的变量为类变量,一旦定义,常驻内存,这与局部变量的定义是矛盾的。望楼主采纳。

java小程序在DOS命令行中报错,无法从静态上下文中引用非静态变量。等...
在java中无法在静态方法中调用非静态的变量,主要是因为静态时属于类的,而非静态是属于对象的,当你调用静态方法调用时,对象是否创建,变量是否初始化,是不是需要考虑?所以在java中,无法判断是否非静态的变量是否存在,即静态方法不能调用非静态变量,用现实的例子举证也是,比如你现在想调用你未来的...

错误: 无法从静态上下文中引用非静态方法
它只有在有实例化对象时才存在的,所以在静态方法中是不可以调用静态变量。如果发生调用,则编译器会报出如上的错误。例如:由于main方法其实是一个静态方法,而maxProfit方法并没有实例化,所以会报错 错误: 无法从静态上下文中引用非静态 变量 this 修改方法:只需要实例化调用的静态变量所属对象即可。

Java中 无法从静态上下文中引用非静态 变量 this
在类DuiLie的前面加上static,因为static void main函数是静态函数,只能调用静态成员,不能调用动态成员

java中 main()方法中为什么不能new 内部类
1.首先你的内部类不是静态的对吧(不是static class)。2.而main方法是静态的。3.main 方法是个静态方法,而 静态 类不是个静态内部类,所以不能直接初始化。对main方法而言,虽然写在类中,它是游离于任何类之外的(就跟C++一样,单独一个main方法),因此某类的非静态内部类对它而言是不直接可见...

java 中是不是 只有静态方法 才能调用静态的成员变量
应该是静态方法只能调用静态变量 你想想,假如你用静态方法调用非静态变量,当类没有初始化的时候就可以使用静态方法,但是这个时候,非静态变量还未产生呢. 编译都会报错的

相似回答