2

我正在尝试更多地了解 Java 中的构造函数。

下面是我的代码。我正在尝试打印一个整数值(加法和减法),但我的输出是一些随机数字。

public class MyNumber {

    private int number;

    public MyNumber(int number) {
        this.number = number;
    }

    public int getNumber() {
        return number;
    }

    public MyNumber add(MyNumber another) {
        return new MyNumber(this.number + another.number);
    }

    public MyNumber sub(MyNumber another) {
        return new MyNumber(this.number - another.number);
    }

    public static void main(String args[]) {
        MyNumber myNumber = new MyNumber(2);
        MyNumber c = myNumber.add(myNumber);
        System.out.println(c);
        MyNumber d = myNumber.sub(myNumber);
        System.out.println(d);
    }
}

这是我的输出:

com.Packagename.MyNumber@7c6768
com.Packagename.MyNumber@1690726

请指教。我对 Java 很陌生,非常感谢任何解释。

4

3 回答 3

6

覆盖toString方法,以便println输出您想要的数字。

@Override
public String toString() {
    return String.valueOf(number);
}

System.out.println调用toString()作为参数传递的对象,toString()类的默认实现Object返回这个com....ClassName@...东西。您需要如上所示覆盖它。

Java 文档中的更多信息。

此外,toString()当运算符 + 应用于连接到字符串的对象时调用。

String a = "b" + new Integer(1); // "b1"
于 2013-06-11T20:13:34.200 回答
3

每个 Java 对象(例如myNumber)都继承自java.lang.Object并有一个toString()方法,当您调用System.out.println(myNumber);. 该toString()方法以其默认形式打印您看到的(显然)随机数据。为了打印number包含在MyNumber类中的变量的值,您只需像这样覆盖该toString()方法:

@Override
public String toString() {
    return String.valueOf(number);
}
于 2013-06-11T20:16:42.697 回答
1
public class MyNumber {

       private int number;
       public MyNumber(int number){
           this.number = number;
       }
       public int getNumber(){
           return number;
       }
       public MyNumber add(MyNumber another){
           return new MyNumber(this.number + another.number);
       }
       public MyNumber sub(MyNumber another) {
              return new MyNumber(this.number - another.number);
           }

       public String toString() {
            return String.valueOf(number);
        }

       public static void main(String args[])
       {
           MyNumber myNumber = new MyNumber(2);
           MyNumber c=myNumber.add(myNumber);
           System.out.println(c.toString());
           MyNumber d= myNumber.sub(myNumber);
           System.out.println(d.toString());
       }
    }
于 2013-06-11T20:25:38.257 回答