[code]public static void main(String [] args) {
int x =5;
boolean b1 = true;
boolean b2 = false;
if((x==4) && !b2)
System.out.print("1 ");
System.out.print("2 "); //essa linha sempre será executada, não está atrelada ao if
if ((b2 = true) && b1); //esse ";" depois do if o termina, ou seja, para o compilador, não há comandos depois desse if, então ele tmb sempre imprime o "3", mude para "{"
System.out.print("3 ");
}
Alguem poderia me explicar, pq a saida deste exercicio é 2 e 3 e nao imprima o 1?[/quote]
[code]public static void main(String [] args) {
int x =5;
boolean b1 = true;
boolean b2 = false;
if((x==4) && !b2) //não executará porque x é diferente de 4 (5) só… isso note que se o operador fosse OU || seria!
System.out.print("1 "); //como você não delimitou com {} só se o if for verdadeiro executa isso
Tem como me ajudar nessa questao aqui tb galera? obrigado
[code]Given:
10. interface Foo {}
11. class Alpha implements Foo { }
12. class Beta extends Alpha {}
13. class Delta extends Beta {
14. public static void main( String[] args) {
15. Beta x = new Beta();
16. // insert code here
17. }
18. }
Which code, inserted at line 16, will cause a
java.lang.ClassCastException?
A. Alpha a = x;
B. Foo f= (Delta)x; // aqui ele ta tentando converter um beta pra Delta pq nao e valido?
C. Foo f= (Alpha)x;
D. Beta b = (Beta)(Alpha)x; // isso aqui e valido? pq?[/code]
Pense no seguinte:
Foo = Vida
Alpha = Pessoa;
Beta = Homem;
Delta = Mulher;
Teríamos o seguinte:
interface Vida {}
class Pessoa implements Vida { }
class Homem extends Alpha {}
class Mulher extends Beta {
Com isso dizemos que um Homem é uma Pessoa (e tem uma Vida) e que Mulher também é uma Pessoa. Entretanto, Nem toda Pessoa é necessariamente um Homem,
ou seja, não necessariamente toda Vida é um Homem (pode ser uma mulher). É o mesmo caso desse Delta e Beta… Todo Delta é um Alpha e todo Beta é um Alpha, mas não necessariamente um Alpha é um Beta.
O Java não deixa fazer essa conversão por causa dessa ordem hierárquica…
Aqui ele já deixa, porque todo Alpha (Pessoa) implementa Foo (Vida).
Eu tava lendo nao sei se estou certo pelo que entendi um Beta nao é um Delta por isso da o java.lang.ClassCastException, so que isso ta me dando uma duvida tremenda cara, pq estou lendo o livro da kathy e la tem umas conversões de d regressão e nao sei se é valido ou não.
No exemplo que você citou, imagine que na classe Dog você criou o método Latir()… Este método com certeza não existirá na classe Animal, pois nem todos os animais latem, correto??
Então, para ter acesso ao método Latir(), ou você cria uma instância de Dog ou cria uma instância de Animal e faz o cast para Dog…
Everton, essa converssão é possivel, mas gera uma exceção ‘ClassCastException’ em tempo de execução.
Em tempo de compilação o que o compilador pode fazer é checar se as duas classe estão na mesma árvore hierarquica.