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