标题:请帮我看看这到题
只看楼主
65063251
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2005-4-1
 问题点数:0 回复次数:5 
请帮我看看这到题
public class f
{
 public static void add3(Integer i)
 {
  int val=i.intValue();
  val+=3;
  i=new Integer(val);
 
  
  
 }
 public static void main(String[] args)
 {
  Integer i=new Integer(0);
  add3(i);
  System.out.println(i.intValue());
  
 }
}
为什么运行结果是0呢? 我试了一下 把方法add3改成:
public static Integer add3(Integer i)
 {
  int val=i.intValue();
  val+=3;
  i=new Integer(val);
  return i;
  
  
 }

 public static int add3(Integer i)
 {
  int val=i.intValue();
  val+=3;
  i=new Integer(val);
  return val;
  
  
 }
结果都是0 是什么原因呢 有人知道 能详细说明一下吗? 谢谢
搜索更多相关主题的帖子: Integer val public int static 
2005-05-23 15:53
kuixingzai
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2005-5-16
得分:0 
主方法i值不确定

菜鸟飞,菜鸟飞,菜鸟高高飞!
2005-05-23 16:08
65063251
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2005-4-1
得分:0 
以下是引用kuixingzai在2005-5-23 16:08:01的发言: 主方法i值不确定
是什么意思? 能说的详细点吗
2005-05-23 17:31
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
得分:0 
Java里变量传递都是传值的,不是传递地址的,你可以试试在add3方法中设置i=null;这样对i丝毫没有影响。
看一下这里的帖子[URL=http://forum.]http://forum.[/URL]

相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2005-05-26 17:51
Doctor
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2005-5-17
得分:0 
变量i传递的是地址,不传递数值,如果要输出3,正确的程序应该如下:
public class f
{
  public static Integer  add(Integer i)//将void改为Integer(返回值类型)
    {
      int val=i.intValue();
      val+=3;
      return new Integer(val);
    }//add
 public static void main(String[] args)
   {
     Integer i=new Integer(0);
     i=add(i);//将add(i)改了
     System.out.println(i);
  
   }//main
}//class f

我本将心向明月,奈何明月照沟渠。 知我者谓我心忧,不知我者谓我何求?
2005-06-08 12:48
Doctor
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2005-5-17
得分:0 
Sorry,说错了,变量i是按值传递,而非按地址传!

我本将心向明月,奈何明月照沟渠。 知我者谓我心忧,不知我者谓我何求?
2005-06-08 12:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-19104-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.499898 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved