java吧 关注:1,239,266贴子:12,709,587
  • 13回复贴,共1

问一下~~~~~~~

只看楼主收藏回复

public class Test1 {
public static void main(String args[]) {
double x = 0;
Test.Ad(x);
System.out.println(x);
}
}
public class Test{
public static void Ad(double x){
x = x + 1;
System.out.println(x);
}
} 最后打印的结果是1 和 0 ,不该是1 和 1么?


1楼2014-09-24 15:13回复
    又不是同一个类,x是不会改变的,作用域不同吧


    IP属地:陕西来自Android客户端2楼2014-09-24 15:31
    收起回复
      1.0是被调用的,X没有返回?


      IP属地:江苏3楼2014-09-24 15:55
      收起回复
        这是因为Test1的x的作用域局限在本类中 和其他类的x虽然同名 但是不是一个东西 所以打出的是0 最好仔细看一下JAVA基础书


        4楼2014-09-24 16:58
        收起回复
          我也是菜鸟对于内存我也不懂,我只发表一下我的见解。
          先输出Test.Ad(x)再输出Test1里的System.out.println(x);。
          因为double x = 0;所有第二的输出的结果就是0.0。
          因为Test.Ad(x)调用的是test里的x=x+1,又因为在Test1里x=0。所有Test.Ad(x)输出的结果应该是X=0+1=1.0


          IP属地:江苏5楼2014-09-24 16:58
          回复