java方法中用static修饰变量为什么会出错?
发布网友
发布时间:2022-04-23 19:12
我来回答
共3个回答
热心网友
时间:2023-09-09 04:28
static是用来修饰类成员的啊,不能用来修饰局部变量。
static意为静态修饰符,也就是说一个类在编译的时候,这个类中用static修饰的变量就已经存在了,而public int m(){}是在类实例化的时候才会有的。如果将static放入public int m(){} 方法中,就得出结论:static int i存在了, public int m(){}却不存在,这不是很矛盾吗?
热心网友
时间:2023-09-09 04:29
static只能用在类的属性里,不能用在方法的局部变量里
热心网友
时间:2023-09-09 04:29
楼主这个代码目的是这样的吧。是想看看static静态变量 和普通变量的区别
但这里出错的原因是 static只能修饰成员变量,如果
public class Test {
static int i=0;//写在这里 不会报错 因为这样i是Test对象的成员变量
public int m(){
i++;
又因为是static变量 内存里只有一个i 所以 i的值一直叠加 最后输出2
而如果不用static关键字 用int i=0 普通变量的话 最后输出的是1 因为
t.m();这个方法没有传给实际变量 所以i不会被保存
希望对你有所帮助