Java中static修饰的变量问题
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呢??????? java static --------------------编程问答--------------------
public static int set(int i) {
return i++;
}
你调用的i只不过是函数里面的i而已,返回之后没有赋值给全局变量i(方法里面的i和全局的i完全没关系),这个问题和静态也没关系,只有一个类而已 --------------------编程问答-------------------- 帮你改了一下。自己再运行一下吧!!
--------------------编程问答-------------------- 非常感谢。。。。。 --------------------编程问答--------------------
package pkg;
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 j) {//这里的i换成j 因为在最上面已经定义了一个全局的静态变量i
i=j;//把j赋值给上文中定义的全局变量i
return i++;
}
}
return i++;貌似没什么意义,要么return i; 要么return ++i;
--------------------编程问答-------------------- 我想你是被i这个变量给搞糊涂了,你set方法中参数i和你成员变量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++;
}
}
补充:Java , Java SE