[英]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()
,来自类Object
的toString()
默认实现返回这个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.