java中费解or奇怪的String类
在网上看到一篇这样的文章,而且广为流传。http://www.matrix.org.cn/resource/article/0/2.html
其中有一段是这样写的:
//////////////////////////////////////////////////////////////////////////
public class Test {
public static void test(String str) {
str += "World"; //我加上了个+号,我想他是忘了。
}
public static void main(String[] args) {
String string = new String("Hello");
test(string);
System.out.println(string);
}
}
运行结果:
Hello
为什么会这样呢?因为参数 str 是一个引用,而且它与 string 是不同的引用,虽然它们都是同一个对象的引用。str += "World" 则改变了 str 的值,使之指向了另一个对象,然而 str 指向的对象改变了,但它并没有对 "Hello" 造成任何影响,而且由于 string 和 str 是不同的引用,str 的改变也没有对 string 造成任何影响,结果就如例中所示。
/////////////////////////////////////////////////////////////////////////////
他的这段文字说明我看不懂..........
我把程序改了一下,如下:
class Mystring
{
String s;
Mystring(String sa)
{
s=sa;
}
}
public class TestString {
public TestString() {
}
public static void main(String[] args) {
Mystring s=new Mystring("Hello");
modify(s);
System.out.println("s= "+s.s);
}
public static void modify(/*StringBuffer*/Mystring sm)
{
sm.s+= " world";
}
}
结果为:
s= Hello world
因此,我只能说String类有点特殊!