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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 爱上这格调 中级黑马   /  2013-10-11 14:08  /  1737 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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那?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

5 个回复

倒序浏览
你确定这能编译通过?changeString(x);这行代码有问题吧
回复 使用道具 举报
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
lihaotian_120 发表于 2013-10-11 14:23
你的函数名写错了,另外,你如果要修改一个值,直接可以定义一个你要修改值类型的一个方法
比如public stat ...

嗯啊啊 谢了  题目抄错了     
回复 使用道具 举报
很简单啊,你定义的 changeInt(int x)方法中,x是局部变量,函数一运行完就释放了,跟你在main中定义的x变量指向的不是同一地址。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
安卓26、27板块已开,老版块加分可能会不及时。去新板块交流吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马