static modifier keyword can be modified with variable and block as well as class method: When you define a static variable, jvm will be allocated in the memory heap, All Programs, a reference to it will point to this address without the need to re-allocate memory; modification of a block of time (the code written in the static block static {...}) when the virtual machine will give priority to load code, which is mainly used for system initialization;when modification of a method you can directly through the class to call without the need for a new object.
The final can be modified variables, methods and classes, when you define a final variable, the jvm will be assigned to the constant pool, the program can not change its value; when you define a method to change the method in a subclass will not be re-write; when you modify a class, the class can not be inherited.