您的位置:首页 > 其它

关于用函数修改String的问题

2013-02-23 09:50 218 查看
看看传递String对象会发生什么结果?

class Str

{

public static void main(String[] args)

{

String s = "java test";

System.out.println(s);

changeString(s);

System.out.println(s);

}

public static void changeString(String str)

{

str = "3gg over right";

}

}

看看结果吧:

java test

java test

你惊奇的发现s的值并没有改变!你会问了,String不也是引用类型的吗?怎么它的值没有改变呢?

因为是这样的:

String被设计为不可修改的类型,也就是对String对象的任何修改都将重新创建一个对象而放弃以前的内存空间的引用!

如上例:

比如 s指向0x2344, 当它赋值给str时str也同样指向了0x2344.而当 执行str="3gg over right"后,str指向了别的地方。也许是

0x2222或者其他,反正不是0x2344了。所以当你输出s的时候,它的值并没有被修改!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: