免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3933 | 回复: 2
打印 上一主题 下一主题

[!!请教!!]如何用函数改变String对象的值? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-06 10:52 |只看该作者 |倒序浏览
10可用积分
我想通过函数改变一个String对象的值。都说java里面除了基本类型以外都是对象引用,那么String也应该是个引用吧? 那么引用本身的值如何改变呢?
--------------------------------------
> cat j.java
public class j{
  public static void f(String s){
    s="abc";
  }
  public static void main(String args[]){
    String s="xyz";
    j.f(s);
    System.out.println("s="+s);
  }
}
输出
> javac j.java
> java -cp . j
s=xyz
发现s没有改变!!!!!!!!
我知道在c语言里面要改变这个s的值,f函数的输入参数不能是char* 而是char**,调用的方式是f(&s)。在java里面如何做到改变s呢?
-------------------------------------------------
我的平台是Sun5.8,java1.2.2,稍微有点老

请dx指教!

最佳答案

查看完整内容

String为值对象,在Java中是不能被改变的,类似int,long这些类型,是不能进行 参数引用 传递的;给你看篇文章,http://hi.baidu.com/jiangfengju/blog/item/e4b14f4a49af142309f7effb.html.应该说的蛮明白.下面的,传递成其他类,都是进行引用传递的.public class j{ public static void f(String s){ s="abc"; } public static void f2(Test s){ s.setA("abc"); return; } public static void main(String args[]){ Str ...

论坛徽章:
0
2 [报告]
发表于 2008-11-06 10:52 |只看该作者
String为值对象,在Java中是不能被改变的,类似int,long这些类型,是不能进行 参数引用 传递的;

给你看篇文章,
http://hi.baidu.com/jiangfengju/ ... f142309f7effb.html.
应该说的蛮明白.


下面的,传递成其他类,都是进行引用传递的.
public class j{
  public static void f(String s){
    s="abc";
  }
  public static void f2(Test s){
    s.setA("abc");
    return;
  }
  public static void main(String args[]){
    String s="xyz";
    j.f(s);
    System.out.println("s="+s);
   
    Test a= new Test();
    j.f2(a);
    System.out.println("a="+a.getA());
  }
}

class Test{
    private String a = "";
   
    public void setA(String a){
        this.a = a;
    }
    public String getA(){
        return this.a;
    }
}

论坛徽章:
0
3 [报告]
发表于 2008-11-06 16:21 |只看该作者
原帖由 bohemia 于 2008-11-6 15:21 发表
String为值对象,在Java中是不能被改变的,类似int,long这些类型,是不能进行 参数引用 传递的;

给你看篇文章,
http://hi.baidu.com/jiangfengju/ ... f142309f7effb.html.
应该说的蛮明白.
...

谢谢,这个看起来清楚多了。分送上!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP