UTF.COM.CN

java中费解or奇怪的String类

作者:佚名 | 来源:网络 | 添加时间:2006-04-07 22:37:01 | 人气:1172

java中费解or奇怪的String类

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类有点特殊!

责任编辑:冬天来了
【字号: 】【去论坛讨论】【发表评论】【打印本文】【告诉好友】【关闭窗口
网友评论(评论内容只代表网友观点,与本站立场无关!)

姓名:

验证码: 点击刷新