java中费解or奇怪的String类

王朝java/jsp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航