This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Java in General and the fly likes doubt with static block? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "doubt with static block?" Watch "doubt with static block?" New topic
Author

doubt with static block?

viki Bhardwaj
Ranch Hand

Joined: Nov 07, 2011
Posts: 74

Hi Everyone,

here i'm going to share one question about static block , actually when i wrote a class having static data member declaration and when tried to disassemble the code by using javap tool then i got something confusing ....let me first write a sample code then you guys easily able to aware about my issue..

here i'm writing one Test class which have a static data member declaration only..

and now here,after disassemble the code using by javap is...

here is fine i have no question regarding above but when i have bellow code.


then after disassembling the above code i found following.

it insert static block here so i'm a bit confused that's why i have a question in my mind that...
1- it is ok, if we do't write any constructor in a class then by default compiler insert a default constructor
2-so can we say here that compiler also insert a static block in the case of static data member declaration with assignment but when i decompile the code and i saw that compiler is not doing this thing
3-only in the above mention condition means if any class having static data member declaration ,disassembler shows the static block.
4-so what is mean here to insert static block and who is responsible for compiler or disassembler(javap)??
please clear my doubt with your valuable answers..
-----------------------------------------
vivek
Manish Dubey J
Greenhorn

Joined: Oct 08, 2011
Posts: 9

Hi Vivek,
I think it is obvious. Static blocks are used to initialize static members of class. It is the first thing to be executed, so when you write -- static int x=10; it is initialized with static block.

Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 38045
    
  22
You should not try to learn anything from decompiled code. Who know what relationship it will have to the original code.
 
 
subject: doubt with static block?
 
Similar Threads
general doubt
well a doubt !
doubt!!
doubt in output(constructor related)
Doubt in numeric conversion