In general, the only reason to have declared but uninitialized class variables is if they are also class properties. In which case there will, or should, be setters, getters and or initializers in constructors.
Otherwise, declare and, if necessary, initialize them as needed. This isn't C, so don't bother with declaring plain old variables up front. Of course, when doing toy apps like this, with everything in main(), the line between class variables, locals and properties is blurred. Java, unlike C#, doesn't actually enforce this distinction, so it is up to the person between the keyboard and the chair to understand what they are doing.