Yes, static initialization blocks are kind of lazy initializers. They will execute when static methods are called or there is a reference to the class.
Just in most of generally thinking, lazy initializer looks like
public static Instance getInstance() {
if (instance == null) {
instance = new Instance();
}
}
we don’t hit upon static initialization block.
We might just load the class first but use instantiated object later, or never. (but I know this case is much rare.)