黑马程序员技术交流社区

标题: 一个小问题 [打印本页]

作者: 爱上这格调    时间: 2013-10-11 14:08
标题: 一个小问题
class Test
{
public static void main(String[] args)
{
  int x = 4;
  changeString(x);
  System.out.println(x);
}
public static void changeInt(int x)
{
  x = 5;
}
}
函数changInt改变x的值   x应该变成5的啊  怎么输出结果还是4那?

作者: ixiangfeng    时间: 2013-10-11 14:22
你确定这能编译通过?changeString(x);这行代码有问题吧
作者: lihaotian_120    时间: 2013-10-11 14:23
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.           int x = 4;
  6.           x=changeInt(x);
  7.           System.out.println(x);
  8.         }
  9.         public static int  changeInt(int x)
  10.         {
  11.                 return 5;
  12.         }
  13. }
复制代码
你的函数名写错了,另外,你如果要修改一个值,直接可以定义一个你要修改值类型的一个方法
比如public static int  changeInt(int x);
如果你要用无返回值的方法的话,局部变量的有效性仅仅在这个方法体之中,这个方法调用完了之后就自动释放了
另外,如果你想用void来改变一个值的话,可以吧X设置成为一个成员变量,然后就可以修改x的值比如:
  1. class Test
  2. {
  3.         private static int x=4;
  4.         public static void main(String[] args)
  5.         {
  6.           //int x = 4;
  7.           changeInt(5);
  8.           System.out.println(x);
  9.         }
  10.         public static void changeInt(int n)
  11.         {
  12.                 x=n;
  13.         }
  14. }
复制代码

作者: 爱上这格调    时间: 2013-10-11 15:01
lihaotian_120 发表于 2013-10-11 14:23
你的函数名写错了,另外,你如果要修改一个值,直接可以定义一个你要修改值类型的一个方法
比如public stat ...

嗯啊啊 谢了  题目抄错了     
作者: spiderman    时间: 2013-10-11 17:19
很简单啊,你定义的 changeInt(int x)方法中,x是局部变量,函数一运行完就释放了,跟你在main中定义的x变量指向的不是同一地址。
作者: 乔兵    时间: 2013-10-11 18:32
安卓26、27板块已开,老版块加分可能会不及时。去新板块交流吧




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