digaoneves:
Não, elas serão executadas de qualquer maneira, sendo if true ou false, o que pode ter te dado essa ilusão, é que no seu if, você lança uma exceção, terminando a execução do método.
quando se tem um if sem chaves, caso o retorno do teste seja true, será executado somente o próximo comando, após ele é retornada a execução normal.public void metodo(int num1, int num2){
if(num1 == num2)
System.out.println("Só serei executado caso o o teste do if retorne true");
System.out.println("Serei executado sempre");
}
Vou mostrar por que surgiu a dúvida.
public void push(int e) throws EmptyStackException{
if(isFull())
throw new EmptyStackException("Pilha cheia!");
pilha[++altura] = e;
System.out.println("Máximo da pilha: "+size+" - Altura da pilha: "+(altura+1));
}
Considerando o seguinte código na main
try{
p.push(entrada);
}
catch(EmptyStackException e){
}
Se eu inserir mais de 2 elementos em minha pilha, uma exceção é lançada: EmptyStackException. Contudo, estou capturando ela. Isso quer dizer que o programa não será finalizado e continuará rodando. Bem, se o que você disse fosse verdade, o próximo comando iria colocar mais um elemento na pilha, havendo um estouro e lançaria a exceção ArrayIndexOutOfBoundsException. Entretanto, essa exceção não é lançada.
O que acontece: Quando insiro o terceiro elemento, é if é executado e retorna true. A exceção é lançada, capturada e o programa continua. As próximas linhas não são executadas e por isso, IndexOutOfBoundsException não é lançada.
Conclusão: as linhas que 05 e 06 em push são consideradas else.