在Java中使用构造函数

时间:2013-06-11 20:10:53

标签: java

我正在尝试更多地了解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的新手,非常感谢任何解释。

3 个答案:

答案 0 :(得分:6)

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

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

System.out.println对作为参数传递的对象调用toString(),来自类toString()的{​​{1}}的默认实现返回此Object项。您需要覆盖它,如上所示。

Java docs中的更多信息。

此外,当operator +应用于连接到String的对象时,会调用com....ClassName@...

toString()

答案 1 :(得分:3)

每个Java对象(例如myNumber)都继承自java.lang.Object并且具有toString()方法,当您调用System.out.println(myNumber);时,该方法将被使用。默认表单中的toString()方法会打印您看到的(apparently)随机数据。要打印number类中包含的MyNumber变量的值,您只需覆盖toString()方法,如下所示:

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

答案 2 :(得分:1)

你走了,

公共类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());
   }
}