//B.javaclass AA
{
private int data;
private String str;
        //初始化默认值
public AA()
{
}
        //初始化
public AA(int a,String b)
{
data=a;
str=b;
}
public void add(int k,String s)
{
data+=k;
str+=s;
}
//clearA()是把data和str的值分别清理为默认值
public void clearA()
{
}
public String toString()
{
return "data="+String.valueOf(data) /* 强制类型转换 */ +" str="+str;
}
}public class B
{
public static void main(String arg[])
{
AA b=new AA(15,"ABC");
b.add(6,"DF");
System.out.println("input : "+b.toString());
}
}     在输出一次结果后,如何通过clearA()将data和str的值清理为默认值进行输出?

解决方案 »

  1.   

    谢谢。
    请问可以具体些吗?
    我就是不知道在clear()中该如何指向默认值。我试着在clear()中定义2个对象让它等于data和str, 似乎行不通,这样输出的值还是与之前输出的值一样。
      

  2.   

    java对象使用的是引用机制,任何对象指向的都是对象的应用空间,所以按楼主得说法,只有用把你的类实现cloneable接口,才能实现。
      

  3.   

    public class B {
    public static void main(String arg[]) {
    AA b = new AA(15, "ABC");
    b.add(6, "DF");
    System.out.println("input : " + b.toString());
    b.clearA();
    System.out.println("input : " + b.toString());
    }
    }
    class AA {
    private int data=56; private String str="........"; // 初始化默认值
    public AA() {
    } // 初始化
    public AA(int a, String b) {
    data = a;
    str = b;
    } public void add(int k, String s) {
    data += k;
    str += s;
    } // clearA()是把data和str的值分别清理为默认值
    public void clearA() {
    data=56;
    str="........";
    } public String toString() {
    return "data=" + String.valueOf(data) /* 强制类型转换 */+ " str=" + str;
    }
    }
      

  4.   

    楼主,你写的代码有几点需要注意:
     你既然把类A中的变量data,str给设置成私有的,你怎么不给它提供get/set呢,所以代码可以优化成:
    public class B {
    public static void main(String arg[]) {
    AA b = new AA(15, "ABC");
    b.add(6, "DF");
    System.out.println("input : " + b.toString());
    b.clearA();
    System.out.println("input : " + b.toString());
    }
    }
    class AA {
    private int data; private String str; // 初始化默认值
    public AA() {
    clearA();
    } // 初始化
    public AA(int a, String b) {
    setData(a);
    setStr(b);
    }
    /////////////////////////////////get/set////////
    public void setData(int data){
    this.data =data;
    }
    public int getData(){
    return data;
    }
    public void setStr(String str){
    this.str =str;

    }
    public String getStr(){
    return str;
    }
    public void add(int k, String s) {
    setData(getData()+k); //data += k;
    setStr(getStr()+s);    //str += s;
    }
    ///////////////////////////////////////////// // clearA()是把data和str的值分别清理为默认值
    public void clearA() {
    setData(56);
    setStr("......");
    } public String toString() {
    return "data=" + String.valueOf(getData()) /* 强制类型转换 */+ " str=" + getStr();
    }
    }
      

  5.   

    基本问题已经解决。
    clearA()
    {
        data=0;
       str="null";
    }在输出处
    b.clearA();
    System.out.println(" "+b,toString);
    可能方法不太规范。
    谢谢大家。