Я не вижу никаких особых преимуществ для статических блоков, которые просто содержат объявления переменных в одну строку.На самом деле, когда все, что вы делаете - это присваиваете значения переменным вашего класса или экземпляра, (на мой взгляд) труднее понять, что происходит.
Статические блоки и блоки экземпляровТем не менее, они пригодятся, когда у вас есть более сложные начальные состояния, которые необходимо создать.Вот пример, где используются и объявление, и статический блок:
static List<Sprocket> mySprockets = new ArrayList<Sprocket>();
static {
mySprockets.add(new Sprocket("foo", 17));
mySprockets.add(new Sprocket("bar", 8));
}