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