1
resposta

Duvida sobre bloco Static

Boa noite!

Não consegui entender seguinte código abaixo. Como é possível instanciar o Scanner fora do main?

public class Solution {``

    static Scanner input = new Scanner(System.in);
    static boolean flag = true;
    static int B = input.nextInt();
    static int H = input.nextInt();

    static {
        try{
            if(B <= 0 || H <= 0){
                flag = false;
                throw new Exception("Breadth and height must be positive");
            }
        }catch(Exception e){
            System.out.println(e);
        }
    }
public static void main(String[] args) {
        if(flag) {
            int area=B*H;
            System.out.print(area);
        }

}//end of main
}//end of class
1 resposta

Os membros static são inicializados antes dos não-estáticos e ficam disponíveis na memória em tempo de execução.

Segundo Deitel (2001, p 373): "Qualquer variável de classe static e qualquer método de classe static existem e podem ser utilizados mesmo se nenhum objeto dessa classe tiver sido instanciado."