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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏冬 中级黑马   /  2012-11-16 21:53  /  2127 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

怎么才能把上面那个change的值传递到主方法里呢???

QQ截图20121116215108.png (12.28 KB, 下载次数: 37)

QQ截图20121116215108.png

3 个回复

倒序浏览
本帖最后由 xmanxihua 于 2012-11-17 00:47 编辑

JAVA中参数传递使用的都是值传递,在你的代码中str引用了一个String对象,这个引用的副本被传到了change方法中,当change方法执行完后,引用的副本被丢弃了,最终str还是引用原来的String对象,另外String类的对象不能被改变,这样,change方法执行完毕,str仍然引用原来的String对象,并且这一个对象本身并没有被改变,所以,最终打印出的值不变。

public class 测试2{
      public static String change()//返回一个String引用
      {
              return "你好";
      }
      public static void main(String[] args)
      {
             String str="Hello";
             str=change();
             System.out.println(str);
      }
}

评分

参与人数 1技术分 +1 收起 理由
朱宏青 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
change 方法 返回 值 是 void ,是不会传值 的, 楼主定义这个方法我感觉 本身 只是用来处理数据,而非返回数据,最主要的,str 变量 都是局部的,你在 change 里的所有操作,都不会变更MAIN里的东西。
  1. public class 测试2{

  2.      static String str;
  3.      public static void change(String str1)
  4.      {
  5.            str = str1;
  6.      }

  7.      public static void main(String[] args)
  8.     {
  9.           //String str="Hello";
  10.           change("Hello !");
  11.           System.out.println(str);

  12.             
  13.     }
  14. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
朱宏青 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
你可以通过返回值的形式传递你改变的结果。

因为通常java是值传递的。通常不会在你方法内部修改后,就修改源。
(但是StringBuffer和StringBuilder等类似有点例外)。
所以你可以把修改的结果通过返回值的形式传递出来。再在外面赋值就行了。

评分

参与人数 1技术分 +1 收起 理由
朱宏青 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马