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 ErrorB.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 ErrorTest.java:4:
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 declared10
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 initializingOP:
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