I am trying to learn more about constructors in Java.
Below is my code. I am trying to print an integer value (addition and subtraction) but my output is some random digits.
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);
}
}
This is my output:
com.Packagename.MyNumber@7c6768
com.Packagename.MyNumber@1690726
Please advise. I am very new to Java and any explanation is greatly appreciated.
Override toString method so println outputs number you want.
@Override
public String toString() {
return String.valueOf(number);
}
System.out.println calls toString() on object passed as argument, default implementation of toString() from class Object returns this com....ClassName@... thing. You need to override it as shown above.
More information in Java docs.
Moreover, toString() is called when operator + is applied on object being concatenated to String.
String a = "b" + new Integer(1); // "b1"
Every Java object (for example myNumber) inherits from java.lang.Object and has a toString() method which is put to use when you call System.out.println(myNumber);. The toString() method in its default form prints the (apparently) random data you saw. In order to print the value of the number variable contained in the MyNumber class you simply override the toString() method like this:
@Override
public String toString() {
return String.valueOf(number);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With