黑马程序员技术交流社区

标题: 有参方法。。 [打印本页]

作者: 魏冬    时间: 2012-11-16 21:53
标题: 有参方法。。
怎么才能把上面那个change的值传递到主方法里呢???

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

QQ截图20121116215108.png

作者: 奚华    时间: 2012-11-17 00:40
本帖最后由 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);
      }
}
作者: 杨建峰    时间: 2012-11-17 12:04
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. }
复制代码

作者: 陈军    时间: 2012-11-20 11:04
你可以通过返回值的形式传递你改变的结果。

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




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