Search code examples
javaobjectdefault-value

What's the default value for an 'object' in java?


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?


Solution

  • 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.

    From Object class Source code

    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 
           }    
    }