Topic: 参数传递问题

  Print this page

1.参数传递问题 Copy to clipboard
Posted by: wzd1233
Posted on: 2006-05-23 14:02

书上说当参数为一个对象时, 是按引用传递的, 但是我就不明白为什么下面的程序会输出1234

public class test1 {
  public static void changeStr(String str){
    str = str.replace('1','a');
  }
  public static void main(String[] args) {
    String str= new String("1234");
    changeStr(str);
    System.out.println(str);
  }
}

2.Re:参数传递问题 [Re: wzd1233] Copy to clipboard
Posted by: zcjl
Posted on: 2006-05-23 14:10

此引用非彼引用,不要用c++的引用来理解

3.Re:参数传递问题 [Re: wzd1233] Copy to clipboard
Posted by: oujianqiang
Posted on: 2006-05-23 19:24

应该改为这样就可以得到你想要的结果了

public class test {
public static String changeStr(String str){
str = str.replace('1','a');
return str;
}
public static void main(String[] args) {
String s;
String str= new String("1234");
s=changeStr(str);
System.out.println(s);
}
}

4.Re:参数传递问题 [Re: wzd1233] Copy to clipboard
Posted by: damondeng
Posted on: 2006-05-24 13:48

这是Java初学者的一个常见问题。

String是一个对象, 但是它是一个安全对象, 当有String的操作时, JVM会新建一个String对象进行操作, 所以其效果就是传值,不是传参。

可以简单地记住String是一个特殊的类, 被传递时是传的值, 不是引用。

5.Re:参数传递问题 [Re: wzd1233] Copy to clipboard
Posted by: wzd1233
Posted on: 2006-05-24 14:05

谢谢各位!


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923