oop - Why am I getting two different outputs in Java code -


class {     int xyz = new b().show(); // prints c=0 , z=null     int c = -319;     b z = new b();     int lmn = z.show(); // prints c=-319      class b {         int show() {             system.out.println("c=" + c);             system.out.println("z=" + z);             return -555;         }     } }  class c {     public static void main(string args[]) {         p = new a();     } } 

why getting c=0 , c=-319 later. similarly, why z null , after not null. happening in code?

you need know new operator responsible creating empty instance of class (instance fields have default values: numeric:0; boolean:false, char:'\0', reference:null). code of constructor invoked after new finish job, , responsible setting correct state such empty object.

now initialization of fields happens in constructor, code

class {     int xyz = new b().show(); // prints c=0 , z=null     int c = -319;     b z = new b();     int lmn = z.show(); // prints c=-319      class b {         int show() {             system.out.println("c=" + c);             system.out.println("z=" + z);             return -555;         }     } } 

is same (notice default values)

class {      int xyz = 0;    //default values     int c = 0;      //     b z = null;     //     int lmn = 0;    //      a(){         xyz = new b().show();          c = -319;         z = new b();         lmn = z.show();      }     class b {         int show() {             system.out.println("c=" + c);             system.out.println("z=" + z);             return -555;         }     } } 

also

xyz = new b().show(); 

is same

xyz = this.new b().show(); 

so created instance of b have access instance of a initialized in current a constructor. code initialized b , z

int c = -319; b z = new b(); 

happens after first show() method (which uses b , z) means default values shown.

this problem doesn't exist in case of second show()

lmn = z.show();  

because b , z initialized.


Comments

Popular posts from this blog

google chrome - Developer tools - How to inspect the elements which are added momentarily (by JQuery)? -

angularjs - Showing an empty as first option in select tag -

php - Cloud9 cloud IDE and CakePHP -