Tuesday, 1 May 2018




Staic control flow in java:------------------------------
Whenever we are executing java class the following sequence of
Steps will be executed as the part of static conrol flow

1. Identification of static members from top to bottom.
2. Execution of static variable assignments and static blocks from top to bottom.
3. Execution of main method.



package staticcontrolflow;

public class Base {
           
            static int i=10;
           
            static
            {
                        m1();
                        System.out.println("First static Block");
            }
            public static void main(String[] args) {
                        m1();
                        System.out.println("Main method");
            }
           
            public static void m1()
            {
                        System.out.println(j);
            }
            static
            {
                        System.out.println("Second static block");
            }
           
            static int j=20;

}



o/p:----------------------------------

0
First static Block
Second static block
20
Main method




//what is the output?

package staticinstanceflow;

public class Initialization {
     
      private static String m1(String msg)
      {
            System.out.println(msg);
            return msg;
      }
     
      public Initialization()
      {
            m=m1("1");
      }
     
      {
            m=m1("2");
           
      }
      String m=m1("3");
     
      public static void main(String[] args) {
            Object o=new Initialization();
      }
}
o/p:-------------------------------------

2
3
1




What is the output?

package staticinstanceflow;

public class Initializaion2 {
           
            private static String m1(String msg)
            {
                        System.out.println(msg);
                        return msg;
            }
           
            static String m=m1("1");
           
            {
                        m=m1("2");
            }
           
            static
            {
                        m=m1("3");
            }
           
            public static void main(String[] args) {
                        Object obj=new Initializaion2();
            }

}

o/p:--------------------

1
3
2




which is executed first?


package staticinstanceflow;

public class Test {
               
                {
                                System.out.println("First instance block");
                }
                static
                {
                                System.out.println("First static block");
                }
               
               
Test()
                {
                                System.out.println("Constructor");
                }
               
                public static void main(String[] args) {
                                Test t1=new Test();
                                System.out.println("main");
                                Test t2=new Test();
                }
               
                static
                {
                                System.out.println("Second static block");
                }
               
                {
                                System.out.println("Second instance block");
                }

}


o/p-----------------------------

First static block
Second static block
First instance block
Second instance block
Constructor
main
First instance block
Second instance block
Constructor


Instance control flow in parent to child relationship:----------------

·         Identification of instance members parent to child
·         Execution of instance variable assignments and instance blocks only in parent class.
·         Execution of Parent constructor.
·         Execution of instance variable assignments and instance blocks in Child class.
·         Execution of Child constructor.

==================================================================

public class Parent {
            int x=10;
            {
                        m1();
                        System.out.println("Parent instance block");
            }
           
            Parent()
            {
                        System.out.println("Parent constructor");
            }
           
            public static void main (String args[])
            {
                        Parent p=new Parent();
                        System.out.println("Parent main");
            }
           
            public void m1()
            {
                        System.out.println(j);
            }
           
            int j=20;
}

==========================================================================



public class Child extends Parent {
           
            int x=100;
            {
                        m2();
                        System.out.println("Child first instance block");
            }
           
            Child()
            {
                        System.out.println("Child constructor");
            }
           
            public static void main(String[] args) {
                        Child c=new Child();
                        System.out.println("Child main");
                       
            }
           
            public void m2()
            {
                        System.out.println(y);
            }
            {
                        System.out.println("Child second instance block");
            }
           
            int y=200;

}

==================================================================================

Run  Child  class:----

o/p:--------------------------

0
Parent instance block
Parent constructor
0
Child first instance block
Child second instance block
Child constructor
Child main


instance control flow:----------------
whenever we are executing a java class first static control flow will be executed
in the static control flow if we are creating an object the following sequence of events
is executed as the part of instance control flow.

1. identification of instance members from top to bottom
2. execution of  instance variable assignments and instance block from top to bottom.
3.execution of constructor

public class Test {
           
            int i=10;
           
            {
                        m1();
                        System.out.println("ist instance block");
                       
            }

           
            Test()
            {
                        System.out.println("constructor");
            }
           
           
            public static void main(String[] args) {
                        Test t=new Test();
                        System.out.println("main");
            }

            public void m1()
            {
                        System.out.println(j);
            }
           
            {
                        System.out.println("second instance block");
            }
           
             int j=20;
           
     }

o/p:-------------
0
ist instance block
second instance block
constructor
main



static block in java................

package staticblock;

public class Test {

{
System.out.println("ist instance block");
}

{
System.out.println("2nd instance block");
}

static
{
System.out.println("ist static block ");
}

static
{
System.out.println("2nd static block ");
}


public Test()
{
System.out.println("0- argument constructor");
}

public Test(int a)
{
System.out.println("1- argument constructor");
}

public static void main(String[] args)
{
Test t=new Test();
Test t1=new Test(10);

}


}

==============================================================================

o/p:------------
ist static block
2nd static block
ist instance block
2nd instance block
0- argument constructor
ist instance block
2nd instance block
1- argument constructor


===============================================================================================


package staticblock;

public class Test1 {


static int x;

static
{
x=100;
}

static void display()
{
System.out.println(Test1.x);
}

public static void main(String[] args) {
Test1.display();
}

}

==============================================================================================

o/p--------------

100

================================================================================================

package staticblock;

public class Test2 {


int x=100;//instance variable
static int y=200;//static variable
void m1(int a)//instance method
{
System.out.println("instance method");
}

static void m2(String s1)//static method
{
System.out.println("Static method");
}

Test2()
{
System.out.println("0-argument-constructor");
}

Test2(int a)
{
System.out.println("1-argument-constructor");
}

{
System.out.println("instance block");
}

static
{
System.out.println("static  block");
}


public static void main(String[] args) {
//static block execute
Test2 t=new Test2();//instance block,constructor
Test2 t1=new Test2(10);//instance block,constructor
t.m1(10);//m1 method execute
Test2.m2("govind");//m2 method execute

}

}


==============================================================================================
o/p:----------------
static  block
instance block
0-argument-constructor
instance block
1-argument-constructor
instance method
Static method

instance block in java......................

instance block:----------------
1. logic
2. initialize the variable

constructor..............
1. logic
2.initialize the variable

both are done during object creation .....

syntax of insyance block------------------

{
//logics
}

===============================================================================


package instanceblock;

public class Test {

Test()
{
System.out.println("Constructor");
}

{
System.out.println("Instance Block");
}

public static void main(String[] args) {
Test  t=new Test();

}
                    }

===============================================================================

o/p:--------------------------------------
Instance Block
Constructor

================================================================================

package instanceblock;

public class Test1 {

public Test1()
{
System.out.println("0-argument- constructor");
}

public Test1(int a)
{
System.out.println("1-argument-constructor");
}

public Test1(int a,int b)
{
System.out.println("2-argument-constructor");
}

{
System.out.println("instance block");
}


public static void main(String[] args) {
Test1 t1=new Test1();
Test1 t2=new Test1(10);
Test1 t3=new Test1(10,20);
}

}

=================================================================================
o/p view:--------------

instance block
0-argument-constructor
instance block
1-argument-constructor
instance block
2-argument-constructor

=================================================================================

package instanceblock;

public class Test2 {

public Test2()
{
System.out.println("0-argument constructor");
}

{
System.out.println("instance block");
}

public static void main(String[] args) {
new Test2();
new Test2();
new Test2();
}
}


==============================================================================
o/p view:----------------------
instance block
0-argument constructor
instance block
0-argument constructor
instance block
0-argument constructor

===============================================================================

package instanceblock;

public class Test3 {

Test3()
{
System.out.println("0- argument-constructor");
}

Test3(int a)
{
System.out.println("1- argument-constructor");
}

{
System.out.println("instance-block-1");
}

{
System.out.println("instance-block-2");
}

public static void main(String[] args) {
Test3 t1=new Test3();
Test3 t2=new Test3(10);

}


}
===============================================================================

o/p view:-------------

instance-block-1
instance-block-2
0- argument-constructor
instance-block-1
instance-block-2
1- argument-constructor

================================================================================



package instanceblock;

public class Test4 {

public Test4()
{
this(10);
System.out.println("0-argument-constructor");

}

public Test4(int a)
{
System.out.println("1-argument-constructor");
}

{
System.out.println("instance block");
}

public static void main(String[] args) {
Test4 t=new Test4();
}

}


======================================================================================

o/p view :-------------

instance block
1-argument-constructor
0-argument-constructor
==============================================================================

package instanceblock;

public class Test5 {

int x;
{
x=100;//variable initialize inside instance block
}

public void diplay()
{
System.out.println(x);
}

public static void main(String[] args) {
Test5 t=new Test5();
t.diplay();

}

}

==============================================================================

o/p:-
100