Разница между инициализацией статических переменных внутри класса и вне его заключается в том, что внутри класса статические переменные лишь объявляются, а не определяются, в то время как вне класса, при необходимости, делается и их инициализация. 2
Например, в языке C++ в классе делается объявление об использовании статической переменной, а кроме того, делается объявление этой переменной вне класса и, при необходимости, там же делается и её инициализация. 1 Если статическая переменная объявлена без инициализации, то она автоматически инициализируется значением 0. 1
Также в языке Java для инициализации статических данных класса используется статический блок инициализации, который выполняется только один раз, когда класс загружается в память. 5