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?
忘高人解答

解决方案 »

  1.   


    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);
            }
      

  2.   

        static int size = 7;
        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有冲突,改名就可以
      

  3.   

    debug的时候,“size in changeIt is”的size值是7,但是打印到控制台上却是207不太懂,
      

  4.   

    二楼正解   static void changeIt(int size){
            this.size = size + 200;
            System.out.println("size in changeIt is " + size);
        }
    size = size + 200; 这种情况下,只是修改了你传进来的那个参数
      

  5.   

    static void changeIt(int size){
            size = size + 200;
            System.out.println("size in changeIt is " + size);
        }
    需要区分size是传进来的参数,还是static的size,这样即可:this.size=size+200
      

  6.   

    LS size是静态的 this是作用于实例的 加了this会编译错误啊
      

  7.   

    static void changeIt(int size){
        size = size + 200;
        System.out.println("size in changeIt is " + size);
    }这里所有的操作都是针对传入的参数来的,局部变量优先
    如果你想改类中的size需要用Foo.size=size+200;
      

  8.   

    Java 方法调用不会改变传入的值。