class Foo
{
static int size = 7;
static void changeIt(int size){
size = size + 200;
System.out.println("size in changeIt is " + size);
}
public static void main(String[] args) {
Foo f = new Foo();
System.out.println("size = " + size);
changeIt(size);
System.out.println("size after changeIt is " + size);
}
}
最后结果是
7
207
7static的变量不是只在内存中占用一个位置吗?为什么在changeIt方法中size加200后 最后打印size还是7?
忘高人解答
{
static int size = 7;
static void changeIt(int size){
size = size + 200;
System.out.println("size in changeIt is " + size);
}
public static void main(String[] args) {
Foo f = new Foo();
System.out.println("size = " + size);
changeIt(size);
System.out.println("size after changeIt is " + size);
}
}
最后结果是
7
207
7static的变量不是只在内存中占用一个位置吗?为什么在changeIt方法中size加200后 最后打印size还是7?
忘高人解答
public class Foo {
static int size = 7;
static void changeIt(int size){
Foo.size = size + 200;
System.out.println("size in changeIt is " + Foo.size);
}
public static void main(String[] args) {
Foo f = new Foo();
System.out.println("size = " + size);
changeIt(size);
System.out.println("size after changeIt is " + size);
}
static void changeIt(int size1){
size = size + 200;
System.out.println("size in changeIt is " + size);
}
public static void main(String[] args) { System.out.println("size = " + size);
changeIt(size);
System.out.println("size after changeIt is " + size);
}
你起的参数名和类的field有冲突,改名就可以
this.size = size + 200;
System.out.println("size in changeIt is " + size);
}
size = size + 200; 这种情况下,只是修改了你传进来的那个参数
size = size + 200;
System.out.println("size in changeIt is " + size);
}
需要区分size是传进来的参数,还是static的size,这样即可:this.size=size+200
size = size + 200;
System.out.println("size in changeIt is " + size);
}这里所有的操作都是针对传入的参数来的,局部变量优先
如果你想改类中的size需要用Foo.size=size+200;