A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


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


10 个回复

倒序浏览
  2 。。。
回复 使用道具 举报
2  把, i 是静态的成员变量, 没调用一次 amethod 都会 给 i 加 1 ,然后 返回, 你调用了 两次 amethod
最后那次 返回的 i 是 2 。
回复 使用道具 举报
XinWen 发表于 2014-5-2 20:06
2  把, i 是静态的成员变量, 没调用一次 amethod 都会 给 i 加 1 ,然后 返回, 你调用了 两次 amethod
...

嗯,明白了,谢谢,知道了
回复 使用道具 举报
运行结果为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;不知道这样能不能说清楚,我也是个新手
回复 使用道具 举报
输出结果应该是2    你调用了两次aMethod()方法
回复 使用道具 举报
我把你的代码增加了两行注释:
因为你的程序里调用了两次 aMethod()方法,可以清楚的看到两次运行过程i值的变化;
第一次调用,i自增前的值0,
第一次调用,i自增后的值1;
......................................................
第二次调用,i自增前的值1,
第二次调用,i自增后的值2;
最终结果为:2。
  1. public class test {
  2.         static int i;

  3.         public int aMethod() {
  4.                 // System.out.println("i自增前的值"+i);
  5.                 i++;
  6.                 // System.out.println("i自增后的值"+i);
  7.                 return i;
  8.         }

  9.         public static void main(String[] args) {
  10.                 test test = new test();
  11.                 test.aMethod();
  12.                 System.out.println(test.aMethod());
  13.         }
  14. }
复制代码
回复 使用道具 举报
答案应该是2.
回复 使用道具 举报
答案应该是2,i 是Test类的静态成员变量,随着类的加载而加载,且存在于内存中的方法区中的静态区,在test.aMethod()调用时,i从默认初始化值0变为1,然后在sop(test.aMethod())时又调用一次,并执行了i++操作,所以代码运行的结果是2.希望对楼主有所帮助。
回复 使用道具 举报
不明白啊,没有初始值,i默认值为零吗?
回复 使用道具 举报
虽然不明白有默认值但是你可以用最基础的调试方法来调试程序:稍微加几个输出。
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;

看这结果,不用多说了吧。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马