java string 传值_关于java里面的string传值问题

publicclassTestS{publicstaticvoidtest(Stringstr)//这里stringstr是定义了一个新的对象?{str="world";}publicstaticvoidmain(String[]args){Stringstr=newString("hello");test(st...

public class TestS

{

public static void test(String str)//这里string str 是定义了一个新的对象?

{

str = "world";

}

public static void main(String[] args)

{

String str = new String("hello");

test(str);

System.out.println(str); //str的值没有改变

}

}

我的理解是str里面是hello的地址,我吧hello的地址传了过去那么str=world后str应该改变为world。但是str还是hello请各位赐教,我这里不是很懂

tanshuangcq你好,我的理解是test里面的str就是str=new string(“hello”)的str地址,因为test(str)不是把str传过去了么,里面不是hello的地址么。

别处看见的“当然都是引用传递,这是毫无疑问的。

对于你的第一个程序来说, String str1 = new String("hello");申明定义一个String类型对象str1,

然后你调用了test(str1);这实际上是引用传递那么str1与str指向同一个对象“hello”,接着str = "world";

使str重新指向“wrold”,那么str1还是指向的“hello”,结果当然不会改变啊 ”

这个解释比较好理解,不过还是谢谢你啦

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值