日期:2014-05-20  浏览次数:20692 次

如何赋值一个字符串数组
比如我有一个字符串数组 String[] sills = {"java","c++","php"};
之后有另外一个字符串数组变量 String[] order; 我想把sills这个字符串的元素都赋值给order,但是当我对order数组操作时,不会对sills有影响,怎么给order赋值?

------解决方案--------------------
调用Object类中clone()方法时,首先在内存中划分一块同原对象相同的空间,然后将原对象的内容原样拷贝至新对象。我们知道,java中有基本数据类型,对于基本数据类型,这样的操作是没有问题的,但对非基本类型变量,它们保存的仅仅是对象的引用,这也是为什么clone后非基本类型变量和原对象中的变量指向同一个对象的原因。可能你已经注意到,程序中用到了String类型,即对象,为什么没有出现引用指向同一地址的情况?这是因为String是一个不可更改的类(immutableclass),每次给它赋值时,都会产生一个新的String对象。如Stringstr="a";str+="b";在这两句代码中,当执行str+="b"时,实际上是重新成生了一个值为"ab"的String对象,即重新分配了一块内存空间。以上clone方法通常被称为"影子clone"。"影子clone"给我们留下了一个问题,即多个引用指向同一个对象。如何解决该问题呢?答案为"深度clone"。

PS:http://cn-done.javaeye.com/blog/477609