繁体   English   中英

在 Java 中使用构造函数

[英]Using constructors in 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 很陌生,非常感谢任何解释。

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

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

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

Java 文档中的更多信息。

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

String a = "b" + new Integer(1); // "b1"

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

@Override
public String toString() {
    return String.valueOf(number);
}
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());
       }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM