java简单问题,这段代码哪里不对。

public class Test{
public int aMethod(){
static int i = 0;
i++;
System.out.println(i);
}
public static void main(String[] args){
Test test = new Test();
test.aMethod();
}
}
错在哪里!

static int i = 0; 在非静态方法中不能定义静态变量 。JVM在开始运行程序的时候,会首先加载静态方法和静态成员变量并分配相对应的地址 而非静态方法在程序加载的时候是在调用的时候才分配内存 。如果在非静态中定义静态变量,那么在初始化的时候无法给该静态内存,这违背了Java的封装原理。

public int aMethod() 你这个方法返回类型为int 而不是void 所以你要在该方法的最后返回int型数据 return i; 或者把 方法的返回类型改为void
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-25
错误有2,
1、public int aMethod这个函数没有提供返回值
2、
static int i = 0;

这里不要设置为静态,去掉static追问

为什么不能 static int i = 0; ?

第2个回答  2012-08-25
public class Test{
public int aMethod(){
int i = 0;
i++;
System.out.println(i);
}
public static void main(String[] args){
Test test = new Test();
test.aMethod();
}
}追问

为什么!

追答

static变量在编译时已经分配内存,
定义static变量是称为静态变量 也是局部变量
在java语法里,方法定义里的形参以及方法体中的变量都是局部变量,不能使用访问权限修饰符public,private和protected。你声明的这个i变量在方法体里,却使用了访问权限修饰符。
你要么把static int i=0 放方法外面去 要么设置为非static
还有 就是你的方法没有返回值

第3个回答  2012-08-25
把类创建到main方法里面
相似回答