public class Test{
static int i;
public int aMethod(){
i++;
return i;
}
public static void main(String[] args){
Test test = new Test();
test.aMethod();
System.out.println(test.aMethod());
}
}
嗯,明白了,谢谢,知道了作者: 刘晶 时间: 2014-5-2 20:15
运行结果为2;
public class Test{
static int i;
public int aMethod(){
i++;
return i;
}
public static void main(String[] args){
Test test = new Test();
test.aMethod(); //执行aMethod() 方法i为1
System.out.println(test.aMethod()); //打印时有调用方法i+1=2;
}
}
如果是这样
public class Test{
static int i;
public int aMethod(){
i++;
return i;
}
public static void main(String[] args){
Test test = new Test();
int a=test.aMethod();
System.out.println(a);
}
}
执行结果为1;不知道这样能不能说清楚,我也是个新手 作者: 法国外籍军团 时间: 2014-5-2 21:52
输出结果应该是2 你调用了两次aMethod()方法作者: 362688114 时间: 2014-5-2 21:52
我把你的代码增加了两行注释:
因为你的程序里调用了两次 aMethod()方法,可以清楚的看到两次运行过程i值的变化;
第一次调用,i自增前的值0,
第一次调用,i自增后的值1;
......................................................
第二次调用,i自增前的值1,
第二次调用,i自增后的值2;
最终结果为:2。
public class test {
static int i;
public int aMethod() {
// System.out.println("i自增前的值"+i);
i++;
// System.out.println("i自增后的值"+i);
return i;
}
public static void main(String[] args) {
test test = new test();
test.aMethod();
System.out.println(test.aMethod());
}
}
复制代码
作者: 王春蕾 时间: 2014-5-2 22:32
答案应该是2.作者: 王春蕾 时间: 2014-5-2 22:35
答案应该是2,i 是Test类的静态成员变量,随着类的加载而加载,且存在于内存中的方法区中的静态区,在test.aMethod()调用时,i从默认初始化值0变为1,然后在sop(test.aMethod())时又调用一次,并执行了i++操作,所以代码运行的结果是2.希望对楼主有所帮助。作者: 姜蕾蕾 时间: 2014-5-2 22:59
不明白啊,没有初始值,i默认值为零吗?作者: 姜蕾蕾 时间: 2014-5-2 23:26
虽然不明白有默认值但是你可以用最基础的调试方法来调试程序:稍微加几个输出。
public class Test
{
static int i;
public int aMethod()
{
i++;
return i;
}
public static void main(String[] args)
{
System.out.println("开始时:"+i+";");
Test test = new Test();
System.out.println("新建Test:"+i+";");
test.aMethod();
System.out.println("调用方法:"+i+";");
System.out.println("最后获取:"+test.aMethod()+";");
}
}
最后得到的结果是:
D:\>javac Test.java
D:\>java Test
开始时:0;
新建Test:0;
调用方法:1;
最后获取:2;