public class TestThis { private static int i; public static void main(String[] args) { TestThis t = new TestThis(); t.get();
t.set(1);
t.get(); TestThis c = new TestThis(); c.get();
c.set(5);
c.get();
} public TestThis() { } public static void get() { System.out.println("i的初始值---" + i); System.out.println("隐示调用i的值 ---" + set(i)); System.out.println("显示调用this i的值--" + set(i)); } public static int set(int i) { return i++;
}
}
为啥输出的结果是0000000呢???????javastatic
t.set(1);
t.get(); TestThis c = new TestThis(); c.get();
c.set(5);
c.get();
} public TestThis() { } public static void get() { System.out.println("i的初始值---" + i); System.out.println("隐示调用i的值 ---" + set(i)); System.out.println("显示调用this i的值--" + set(i)); } public static int set(int i) { return i++;
}
}
为啥输出的结果是0000000呢???????javastatic
}
你调用的i只不过是函数里面的i而已,返回之后没有赋值给全局变量i(方法里面的i和全局的i完全没关系),这个问题和静态也没关系,只有一个类而已
t.set(1);
t.get(); TestThis c = new TestThis(); c.get();
c.set(5);
c.get();
} public TestThis() { } public static void get() { System.out.println("i的初始值---" + i); System.out.println("隐示调用i的值 ---" + set(i)); System.out.println("显示调用this i的值--" + set(i)); } public static int set(int j) {//这里的i换成j 因为在最上面已经定义了一个全局的静态变量i
i=j;//把j赋值给上文中定义的全局变量i
return i++;
}
}
分析代码:
首先你调用get,那么get方法输出的都是0,这个没问题。
在调用set方法,你传了个参数1,在set方法中放回1后再+1,这个方法是有返回值的,但是你t.set后并没有接受返回来的值,也就是你调用这个方法没有任何意义。
然后你在调用t.get方法,其实和第一部调用get是一回事,你的成员变量i并没有因为你调用set方法而改变。
t.get();
t.set(1);
t.get();画图说明:
下面这段代码,不知道是不是你想要的结果。
package com.test;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class Test {
private static int i; public static void main(String[] args) { Test t = new Test(); t.get();
i = t.set(1);
t.get(); Test c = new Test(); c.get();
i = c.set(5);
c.get();
} public Test() { } public static void get() { System.out.println("i的初始值---" + i); System.out.println("隐示调用i的值 ---" + set(i)); System.out.println("显示调用this i的值--" + set(i)); } public static int set(int i) {
return i++;
}
}