Out of blue, I came across this:
public class demo {
void multiply(){
System.out.println("HELLO WORLD!")
}
}
public static void main(String args[]){
demo e=new demo();
demo e1=new demo();
System.out.println(e);
System.out.println(e1);
}
}
The weird output that I got when I executed the code was:
demo@6e1408
demo@e53108
Or
demo@1888759
demo@6e1408
Can someone please explain to me what's happening? The value I got, is this a default value for an object, or am I missing something?
You have to override
the toString()
method in your classes which you are printing.
Right now it's printing the default implementation of Object
class toString()
method.
Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.
The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of: getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns:
a string representation of the object.
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
So in your Demo class Ovveride toString()
method to get desired O/P.
public class Demo{
----
@Override
public String toString() {
//return something
}
}