java中怎么实现String类型变量作为函数参数?

牧童吃五谷 2007-07-03 10:05:30
我想定义一个函数,该函数有一个String类型的参数,函数中要求返回一个String的新值,该如何编写函数阿?
下述定义方法为什么不行啊?
void TestFunc(String sss)
{
sss = new String("asdfafd");
}

//调用
String sv = "sadfa";
TestFunc(sv);
//这时候sv还是原来的旧值啊,为什么不能更新呢?该如何定义呢?
...全文
801 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChDw 2007-10-30
  • 打赏
  • 举报
回复
Java对String的传递参数没有任何特别!


如果你在方法中修改了传入参数的内容,如list.add, stringbuffer.append方法,则会同时影响到外部的变量

而如果你修改的是指向,如obj = new ...这样,则不可能影响到外部的变量内容
huadis 2007-10-30
  • 打赏
  • 举报
回复
静态变量
HelloWorldDemo 2007-10-28
  • 打赏
  • 举报
回复
String是一个对象,对象引用按值传递,引用只能改变对象的状态,即只能改变对象里的属性值,而不能改变对象本身
yuyu622 2007-10-10
  • 打赏
  • 举报
回复
用静态变量也行啊.
init 2007-07-03
  • 打赏
  • 举报
回复
// use org.omg.CORBA.StringHolder
// my code :

import org.omg.CORBA.StringHolder;

public class methodParameter
{
public static void main(String[] args)
{
MyTest itl = new MyTest();
itl.Test();
}

}

class MyTest
{
private void TestFunc(StringHolder str)
{
str.value = new String("asdfafd");
}

public void Test()
{
String sv = "sadfa";
System.out.println(sv);
StringHolder sh = new StringHolder(sv);
TestFunc(sh);
sv = sh.value;
System.out.println(sv);
}


}
牧童吃五谷 2007-07-03
  • 打赏
  • 举报
回复
那应该怎么解决阿??难道就没有办法了吗?
yuyu622 2007-07-03
  • 打赏
  • 举报
回复
因为参数 sss 是一个引用,而且它与 string 是不同的引用,虽然它们都是同一个对象的引用。sss = new String("asdfafd"); 则改变了sss 的值,使之指向了另一个对象,然而 sss 指向的对象改变了,但它并没有对 sv 造成任何影响,而且由于 sv 和 sss 是不同的引用,sss 的改变也没有对 sv 造成任何影响,结果就如例中所示。
Sprite_bei 2007-07-03
  • 打赏
  • 举报
回复
java的参数传递都是以值的形式传递
如果是基本数据类型传递的就是数据本身ex)int a=1 acv(a)此时传进的就是1
如果是对象传导函数中的就是函数的内存地址而不是对象本身
相对于string类型 传进去的是string的一个引用
即生成一个指向原string内存地址的引用
此时两个引用都指向同一块内存
对这个引用重新赋值后就指向新的内存地址
但是sv的指向地址是不变的
ljq900 2007-07-03
  • 打赏
  • 举报
回复
好return
crystal_zhou 2007-07-03
  • 打赏
  • 举报
回复
return 可以
牧童吃五谷 2007-07-03
  • 打赏
  • 举报
回复
我也试了一天时间了,原因是Java对于String类型变量作为函数参数比较特别,其实际是传值的,所以是没办法作为返回值,其余的采用new来分配的类对象都是传地址的,所以可以返回的
yuyu622 2007-07-03
  • 打赏
  • 举报
回复
对,只能用return了
kulin3422 2007-07-03
  • 打赏
  • 举报
回复
return sss;
h1787415 2007-07-03
  • 打赏
  • 举报
回复
可以添加返回值,重新赋值给传入的字符串。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧