I want to just know about why Object,String etc. have static{} block at the end.what is the use of static block in Object Class.
Open the cmd prompt and type
javap java.lang.Object
What you are looking at is just all the method and field declarations. Since the static block is somewhat like a method, you will just see the empty declaration of a static-initalizer.
If you look at the OpenJDK source code for java.lang.Object
on line 40, the code actually says this
public class Object {
private static native void registerNatives();
static {
registerNatives();
}
A simple explanation of the static block is that the block only gets called once, no matter how many objects of the type you create.
If you want more information from the command line, javap -verbose java.lang.Object
outputs this
static {};
descriptor: ()V
flags: ACC_STATIC
Code:
stack=0, locals=0, args_size=0
0: invokestatic #16 // Method registerNatives:()V
3: return
LineNumberTable:
line 41: 0
line 42: 3
}
Or, less verbose javap -c java.lang.Object
static {};
Code:
0: invokestatic #16 // Method registerNatives:()V
3: return
If you want to read about what registerNatives()
does, you can read this post.
What does the registerNatives() method do?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With