Pages

Static Variable


Note : In below program i and j are global static variable ,if a global variable not initialize it will take its default values.
1)
class A 
{
 static int i;//Global variable
 static int j=20;
 public static void main(String[] args) 
 {
  System.out.println(i);
  System.out.println(j);
 }
}
OP:
0
10
---------------------------------------------------------------------------
Note :
in below program we trying to access a non-static variable i from a static method. which is not allowed ,we can access only
static variable from static context ,hence compilation error.

2)
class B 
{
        int i; 
 static void test()
 {
  System.out.println("From test"+i);
 }
 public static void main(String[] args) 
 {
  System.out.println("From main"+i);
 }
}
-->Compilation Error
B.java:6: non-static variable i cannot be referenced from a static context
System.out.println("From test"+i);
^
Test.java:10: non-static variable i cannot be referenced from a static context
System.out.println("From main"+i);
^
2 errors
---------------------------------------------------------------------------
3)
class B 
{
 static int i;
 static void test()
 {
  System.out.println("From test"+i);
 }
 public static void main(String[] args) 
 {
  System.out.println("From main"+i);
 }
        static int j; //static Global variable can be declare from any where
}
OP:
From main0
---------------------------------------------------------------------------
4)
class C
{
 static void test()
 {
  System.out.println("From test "+i);
 }
 static int i;
 public static void main(String[] args) 
 {
  System.out.println("From main "+i);
  i=10; //re-initialized a global variable,this variable is not local but global hence 10 will reflect in other method also
  test();
 }
}
OP:
From main 0
From test 10
---------------------------------------------------------------------------
5)
class D 
{
 static int i,j=10;
 static int k;
 public static void main(String[] args) 
 {
  System.out.println(i);
  System.out.println(j);
  System.out.println(k);
  System.out.println(m);
  System.out.println(n);
  System.out.println(p);
 }
 static int m,n=20,p;
}
OP:
0
10
0
0
20
0
---------------------------------------------------------------------------
Note : a global variable can not be re-initialized globally.but it can be inside main method
6)
class E 
{
 static int i;
        i=50; 
 public static void main(String[] args) 
 {
  System.out.println(i);
 }
}
--Compilation Error
Test.java:4: expected
i=50;
^
1 error

---------------------------------------------------------------------------
Not : But global variable can be re-initialize from locally in side any method
7)
class E 
{
 static int i;
 static int j;
 public static void main(String[] args) 
 {
  i=10; //re-initialize global variable.
  System.out.println("From main :"+i);
  test();
  System.out.println("From test :"+j);
 }
 static void test()
 {
  j=50;
 }
}
OP:
From main :10
From test :50

---------------------------------------------------------------------------
Note : static variable can be access by className.variableName.
8)
class F 
{
 static int i;
 public static void main(String[] args) 
 {
  System.out.println(i);
  System.out.println(F.i);
  i=10;
  System.out.println(i);
  System.out.println(F.i);
  F.i=20;
  System.out.println(i);
  System.out.println(F.i);
 }
}
OP:
0
0
10
10
20
20

---------------------------------------------------------------------------
9)
class G 
{
 static int i;
 public static void main(String[] args) 
 {
  int i=10;
  System.out.println(i);  //This i is local.
  System.out.println(G.i);
  i=20;  //local variable re-initialize
  G.i=30;//global variable re-initialize
  System.out.println(i);
  System.out.println(G.i);
 }
}
OP:
10
0
20
30

---------------------------------------------------------------------------
10)
class H 
{
 static int i=10;
 static double j=20.74;
}

class H
{
}
Run time error:
Both class are valid compile successful,but run-time error.BECAUSE OF NO MAIN METHOD
---------------------------------------------------------------------------
Note : i must be declare (in case of global variable initialization not required)before assigning to other variable(TOP TO BOTTOM)
11)
class A 
{
 static int i;
 static int j=i;
 public static void main(String[] args) 
 {
  System.out.println(i);
  System.out.println(j);
 }
}
OP:
0
0
---------------------------------------------------------------------------
Note : In the below program there are total 3 member(i,j,one main()),2 attribute(i,j),2 fertilizer(i,j)
12)
class B 
{
 static int i=10;
 static int j=i+20;
 public static void main(String[] args) 
 {
  System.out.println(i);
  System.out.println(j);
 }
}
OP:
10
30

---------------------------------------------------------------------------
13)
class D 
{
 static int i=j;
 static int j=10;
 public static void main(String[] args) 
 {
  System.out.println(i);
  System.out.println(j);
 }
}
Note : j(global var) must be declare before the i;
Compilation Error:
D.java:3: illegal forward reference
static int i=j;

---------------------------------------------------------------------------
14)
class E 
{
 static int i=10;
 static int j=i;
 static int k=m;
 static int m=j;
 public static void main(String[] args) 
 {
  System.out.println(i);
  System.out.println(j);
  System.out.println(k);
  System.out.println(m);
 }
}
--compilation error as above program
---------------------------------------------------------------------------
15)
class F 
{
 static void test()
 {
  System.out.println(i);
 }
        //static int i=10;
 public static void main(String[] args) 
 {
  System.out.println(i);
  test();
 }
        static int i=10;
}
Note :i=10 will reflect every where because it is global variable ,no matter where it has been declared
10
10
---------------------------------------------------------------------------
16)
class G
{
 static int i=test();
 static int test()
 {
  return 10;
 }
 public static void main(String[] args) 
 {
  System.out.println(i);
 }
}
OP:
10
---------------------------------------------------------------------------
17)
class H 
{
 static int i=test();
 static int j=10;
 static int test()
 {
  return j;
 }
 public static void main(String[] args) 
 {
  System.out.println(i);
  System.out.println(j);
 }
}
Note : top to bottom ,storing default value then initializing
OP:
0
10

---------------------------------------------------------------------------
18)
class A 
{
 static int x=10;
 static int y=test();
 static int z=20;
 static int test()
 {
  return z;
  //return x; while loading test method will return z=0 and x=10;
 }
 public static void main(String[] args) 
 {
  System.out.println(x);
  System.out.println(y);
  System.out.println(z);
 }
}
OP:
10
0
20
---------------------------------------------------------------------------
19)
class B 
{
 static int x=test();
 static int test()
 {
         System.out.println("A :"+x);
     return 10;
 }
 public static void main(String[] args) 
 {
  System.out.println("B :"+x);
 }
}
OP:
A :0
B :10
---------------------------------------------------------------------------
20)
class B 
{
 static int i;
 static void test()
 {
        System.out.println("From test");
 }
}
/*
Compile success.
Exception in thread "main" java.lang.NoSuchMethodError: main
once loading complete compiler will search main method..hence exception
*/
---------------------------------------------------------------------------
21)
class B 
{
 static int x=test();
 static int test()
 {
         System.out.println("From test");
     return 10;
 }
}
Note :
while loading class all static member executes, after loading compiler will search for main method ,hence giving run time exception

OP:
From test
Exception in thread "main" java.lang.NoSuchMethodError: main



No comments:

Post a Comment