when we create a class you are creating a new data type. we can use this type to declare objects of that type. However obtaining of a class is a two -step process first you must declare a variable of the class type.
This variable does not define an object Instead it is simply a variable that can refer to an object. second you must acquire an actual physical copy of the object and assign it to that variable you can do this using the new operator . The new operator dynamically allocates that is at run time memory for an object and returns a reference to it. This reference is more or less the address in memory of the object allocated by new. This reference is then stored in the variable. Thus is java all class objects must be dynamically allocated.