Nunca havia vista esse código;
String name = "Hispo";
{System.out.println(name);}
O nome Hispo será impresso na tela mesmo que não use as chaves, mas porque usa-las?
Nunca havia vista esse código;
String name = "Hispo";
{System.out.println(name);}
O nome Hispo será impresso na tela mesmo que não use as chaves, mas porque usa-las?
As chaves só servem pra delimitar um bloco de instruções com um escopo. Nesse caso não faz a menor diferença. Tente fazer isso aqui que talvez faça mais sentido:
{
String name = "Hispo";
}
System.out.println(name);
A gente usa isso direto nos operadores if, else, for, etc. O formato desses operadores é:
if (condicao) [instrucao];
No lugar da [instrucao], você coloca uma única instrução (tipo System.out.println(...) ou um bloco, tipo {...}.
Achei estranho porque nunca havia visto, obrigado.
Os parenteses soltos na classe representam blocos de inicialização. Este é o conceito correto. Eles podem ser estáticos ou não e são executados antes dos construtores. No ciclo de inicialização de uma classe, primeiro são executados os blocos de inicialização estáticos, depois os blocos normais, depois os construtores. Exemplo:
public class Teste{
{System.out.println("A");}
static {System.out.println("B");}
public Teste(){
{System.out.println("C");}
}
}
Quando instanciar a classe (new Teste()), será impresso:
B
A
C