As per standard book constructor is a special type of function which is used to initialize objects.As constructor is defined as a function and inside class function can have only two type either static or non static.My doubt is what constructor is ?
1.)As constructor is called without object so it must be static
Test test =new Test();//Test() is being called without object
so must be static
My doubt is if constructor is static method then how can we frequently used this inside
constructor
Test(){
System.out.println(this);
}
Does the output Test@12aw212 mean constructors are non-static?
Your second example hits the spot.
thisreference is available in the constructor, which means constructor is executed against some object – the one that is currently being created.In principle when you create a new object (by using
newoperator), JVM will allocate some memory for it and then call a constructor on that newly created object. Also JVM makes sure that no other method is called before the constructor (that’s what makes it special).Actually, on machine level, constructor is a function with one special, implicit
thisparameter. This special parameter (passed by the runtime) makes the difference between object and static methods. In other words:is translated to:
where first parameter is named
this. On the other handstaticmethods are called as-is:translates to:
Foohere is just a namespace existing barely in the source code.