Questão

8 respostas
S

What happens when you try to compile and run the code below?

public class Test
{
  {
    System.out.print("Hello");
  }
  
  public static void main(String[] args)
  {
    new Test(); 
    new Test();
    new Test();
  }
}

A- The code does not compile.
B- Output is “Hello”.
C- Output is “HelloHello”.
D- Output is “HelloHelloHello”.
E- Compilation succeeds, but no output is generated.

8 Respostas

D

não sei se está muito obvia ou é alguma pegadinha.
mas pra mim é a Letra D, será impresso: HelloHelloHello

R

realmente naum tem nada de diferente:

letra D

S

por que acontece isso???
ele interpreta como contrutor???

F

isso eh um bloco estatico anonimo de classe … toda instancia dessa classe ele eh executado … independente se o construtor for default ou nao… ele vai imprimir o numer de vezes q a classe foi instanciada no main… entao seria a letra D …
poxa cara … naum sei muitas particularidades dessa questao … se alguem puder dar uma explicada melhor …

S

Sim, é a letra D.

O bloco é executado antes do construtor.
Se o bloco estivesse marcado como static, só executaria uma vez, mesmo criando-se três instâncias da classe, como no exemplo…
Ahh sim, e o bloco não precisa ser o primeiro bloco da classe :slight_smile:

S

entaum eh a mesma coisa que um bloco static?

R

O bloco static é executado quando a classe é carregada na memória, enquanto o bloco “default”, como no exemplo, é executado sempre que um objeto da classe é instanciado.

C

Interesante …

Criado 4 de março de 2005
Ultima resposta 8 de mar. de 2005
Respostas 8
Participantes 7