黑马程序员技术交流社区

标题: 代码问题 [打印本页]

作者: Style栉    时间: 2014-3-27 21:19
标题: 代码问题
本帖最后由 Style栉 于 2014-3-27 21:32 编辑
  1. class Demo
  2. {
  3.         int x ;

  4.         public static void main(String[] args)
  5.         {
  6.                 Demo d = new Demo();
  7.                 method(d);
  8.                 System.out.println("d.x="+d.x);
  9.                 function(d.x);
  10.                 System.out.println("d.x="+d.x);
  11.         }

  12.         public static void method( Demo d )
  13.         {
  14.                 d.x = 10;
  15.         }

  16.         public static void function(int x)
  17.         {
  18.                 x = 100;
  19.         }
  20. }
复制代码

//最后的结果怎么会是10 10呢.....第二个输出结果没想通.
作者: 宋超2356    时间: 2014-3-27 21:25
  1. class Demo
  2. {
  3.         int x ;

  4.         public static void main(String[] args)
  5.         {
  6.                 Demo d = new Demo();
  7.                 method(d);
  8.                 System.out.println("d.x="+d.x);
  9.                 function(d.x);
  10.                 System.out.println("d.x="+d.x);
  11.         }

  12.         public static void method( Demo d )
  13.         {
  14.                 d.x = 10;
  15.         }

  16.         public static void function(int x)
  17.         {
  18.                 x = 100;//问题在于这个x是function方法中声明的x,你把它赋值100与第二句的输出d.x是木有半毛钱关系滴      
  19.         }
  20. }
复制代码

作者: Zero霖    时间: 2014-3-27 21:37
本帖最后由 Zero霖 于 2014-3-27 21:39 编辑

因为 function(d.x)传入的是10,但是function方法的参数x跟你定义的Demo类的成员变量x不是同一个变量,所以改变的只是参数x的值而不是成员变量x的值。我估计根据你的需要,可以改成这样:
function方法改成:
public static void function(int x)
{
         d.x=x;
}
而主函数中可以将function(d.x)改成function(100),这样修改的就是Demo类的成员变量x的值了。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2