我正在学习Java,最近通过了Copy Constructor教程。我试图编写“复制构造函数”代码,但是它提供了意外的输出。

问题是:

为什么第一个输出显示0null值?

这是带有复制构造函数的对象:

class student6 {

    int id;
    String name;
    int i;
    String n;

    student6(int a, String b) {
        id = a;
        name = b;
    }

    student6(student6 s) {
        i = s.id;
        n = s.name;
    }

    void display() {
        System.out.println(i + "..." + n);
    }

    public static void main(String args[]) {
        student6 s1 = new student6(11, "Suresh");
        student6 s2 = new student6(s1);

        s1.display();
        s2.display();
    }
}


输出量


  0...null
  
  11...Suresh

最佳答案

您必须更改您的复制构造函数逻辑

student6(student6 s)
{
i=s.id;
n=s.name;
}




student6(student6 s)
 {
    id=s.id;
    name=s.name;
 }


在您的显示方法中,您正在打印idname。因此,您只需要初始化它们即可查看结果。

并且请按照Java naming conventions。类名以大写字母开头。 student6应该是Student6

附注:感谢您打印我的名字;)

10-02 04:49