当前位置: 代码迷 >> J2SE >> String类不能克隆吗,怎么处理
  详细解决方案

String类不能克隆吗,怎么处理

热度:8508   发布时间:2013-02-25 00:00:00.0
String类不能克隆吗,怎么办
Java code
import javax.swing.*;import java.util.*;import java.math.*;import java.util.Date;public class CloneTest extends Object{    public static void main(String[] args)    {        Employee e1 = new Employee();        Employee e2 = e1;        e1.SetName("ff");        e1.SetName("gg");        System.out.println( e2.GetName() );    }}class Employee implements Cloneable{    private String name;    public void SetName(String a)    {        this.name = a;    }    public String GetName()    {        return this.name;    }    public Employee clone() throws CloneNotSupportedException    {        Employee cloned = (Employee)super.clone();        cloned.name = (String) name.clone();//Eclipse提示这个clone函数不可视        return cloned;    }}


------解决方案--------------------------------------------------------
String类是被final修饰过的,是不可变的。
------解决方案--------------------------------------------------------
String是final类,不可变。
------解决方案--------------------------------------------------------
public Employee clone() throws CloneNotSupportedException
{
Employee cloned = (Employee)super.clone();
cloned.name = name; //这样子就行啦 ,String 是final类 ,它的内容存放到 常量区的 
return cloned;
}

------解决方案--------------------------------------------------------
Java code
        String abc = "abc";        String xyz = new String(abc);        System.out.println(xyz);
------解决方案--------------------------------------------------------
Java code
public final class String    implements java.io.Serializable, Comparable<String>, CharSequence
------解决方案--------------------------------------------------------
为啥要clone,4楼写的不是做得很好么
------解决方案--------------------------------------------------------
Java code
public Employee clone() throws CloneNotSupportedException    {        Employee cloned = (Employee)super.clone();        cloned.name = new String(name);//这样就构成了一个新串,String没有实现Cloneable不能被克隆        return cloned;    }
------解决方案--------------------------------------------------------
改用StringBuffer吧,效率比String高
------解决方案--------------------------------------------------------
搂主的意思是
A,B指向同一个对象,然后A改变,B也跟着改变。
如果是这样的话的话, 那String是不可能实现的,String是不可更改的。
你必须自己建立一个类,他包含String就行了。
如果不是,你把string当成int一样就性了
------解决方案--------------------------------------------------------
难道是在做面试题的练习吗?
STRING 与STRINGBUFFER的区别
还是
FINAL FIANLLY FINAIZE的区别?
  相关解决方案