📜  在Java中重写toString()

📅  最后修改于: 2020-03-20 14:16:07             🧑  作者: Mango

这篇文章类似于Java中的重写equals方法。考虑以下Java程序:

// 文件名: Main.java
class Complex {
    private double re, im;
    public Complex(double re, double im) {
        this.re = re;
        this.im = im;
    }
}
// 测试代码
public class Main {
    public static void main(String[] args) {
        Complex c1 = new Complex(10, 15);
        System.out.println(c1);
    }
}

输出:

Complex@19821f

输出是类名,然后是“ at”符号@,然后是object的hashCode的末尾。Java中的所有类都直接或间接地从Object类继承(请参见链接)。Object类具有一些基本方法,例如clone(),toString(),equals()等。Object中的默认toString()方法打印“类名@哈希码”。我们可以在类中重写toString()方法以输出正确的输出。例如,在以下代码中,toString()被重写以打印“ Real + i Imag”表格。

// 文件名: Main.java
class Complex {
    private double re, im;
    public Complex(double re, double im) {
        this.re = re;
        this.im = im;
    }
    // 重写toString()
    @Override
    public String toString() {
        return String.format(re + " + i" + im);
    }
}
// 测试代码
public class Main {
    public static void main(String[] args) {
        Complex c1 = new Complex(10, 15);
        System.out.println(c1);
    }
}

输出:

10.0 + i15.0

通常,重写toString()是一个好主意,因为当在print()或println()中使用对象时,我们会得到正确的输出。