Essa apareceu no jdiscuss

public class TestClassB 
{
    static boolean b;
    static int[] ia = new int[1];
    static char ch;
    static boolean[] ba = new boolean[1];

    public static void main(String args[]) throws Exception
    {
        boolean x = false;
        if( b )
        { 
            x = ( ch == ia[ch]);
        }    
        else x = ( ba[ch] = b );

        System.out.println(x+" "+ba[ch]+" "+ch);
    }
}

Eu acho que dá um unreachable statment no

x = ( ch == ia[ch]);

Abraços,
Tiago Serafim

Juro que eu não entendi a pegadinha, mas dá “false false <algum caracter unicode estranho do inicio da tabela>”

aqui esta a explicação dada no jDiscuss

Vendo esta questão, fiquei com a seguinte dúvida:
A assinatura do metodo main é:

public static void main(String args[]) {}

Correto?

Então, porque não dá erro de compilação nesta declaração, já que ela lança uma throw?

public static void main(String args[]) throws Exception {}

pq lançar ou nao excecao nao é modificar a assinatura…

modifica a assinatura é:
1º mudar parametros
2º mudar retorno

num Override por exemplo, vc pode sobrescrever uma funcao que lanca N excecoes, por uma que nao lança nenhum… isso é um override valido.

no caso, main nao sofre override, por isso eh possivel adicionar Excecoes!!

eu entendi, não há override.
Mas eu pensei que a assinatura do método main não podia ser diferente.

Só para lembrar:
num Override, vc pode NÃO sobrescrever uma funcao que NAO lança excecoes, por uma que LANÇA
isso é um override INvalido.

certo!!!

e eu acho que foi aí que eu me confundi.

valeu o esclarecimento.

Opa com certza!
valew o cometário de todos!!!

To aprendendo muito a cada dia graças ao pessoal do fórum!!!
valew

pq não da erro quando eu testo a variavel b, já que ela não foi inicializada?

pq variaveis da intancia sao inicializadas automaticamente
so é obrigado inicializar EXPLICITAMENTE variaveis do metado