Static blocks are blocks of code prefixed with the 'static' keyword that get executed only once when the class is loaded. They are used to initialize static variables. Final variables prevent modification of their contents once initialized and must be initialized when declared, allowing for typed constants. Static blocks and final variables demonstrate important concepts in Java including static initialization and constants.