Gabarito disponível
public class Contador
{
private static int cont;
public Contador()
{
++cont;
}
public static void main (String[] args)
{
Contador x, y;
x = new Contador();
y = x;
System.out.println(cont);
}
}
Resolução comentada
A variável estática é incrementada uma vez, pois só há um new; a saída é 1.
cont é static e compartilhada pela classe. Apenas um objeto é criado, com x = new Contador(), e o construtor incrementa cont para 1. A atribuição y = x apenas copia a referência e não chama o construtor. A saída é 1.
Análise das alternativas
A) 0 ignoraria o incremento do construtor. C) 2 supõe que y = x criaria outro objeto. D) Um método static pode acessar um membro static, então não há erro de compilação. E) Não há erro em tempo de execução.
Referência: Deitel & Deitel, Java: Como Programar (membros static).
Resolução comentada do VaiConcursos.