Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

this keyword usage

 
Rama Lakshmi
Greenhorn
Posts: 27
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

can any one pls exaplain that why can't i use this keyword in static block?

and pls explain me the flow of excution...

public class fun4 {

int b;
int k;
{
b=9;
System.out.println("Instance block started");

}
static{
//this.k=90; //getting compilation error
System.out.println("Static block started");
}


public static void main(String[] args) {

fun4 f = new fun4();

System.out.println("Main method started");


}


}

--Thanks in Advance
Rama
 
Leandro Melo
Ranch Hand
Posts: 401
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi ramasri.

You cannot use this inside a static block because this relates to an instance of a class ("this instance"), while static blocks belong to the class itself. So, which one is the this instance when you're inside a block that does not belong specifically to any instance? In the case of your program, the static block is execute when the class is loaded, that's why the first output you see is "Static block started". Then, instace data is initialized. Is that clear?
 
Rama Lakshmi
Greenhorn
Posts: 27
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Leandro

Thank you for quick reply..

Yes it's cleared now

--Ramasri
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic