publicstaticvoidmain(String[]args){intx=5;booleanb1=true;booleanb2=false;if((x==4)&&!b2)System.out.print("1 ");System.out.print("2 ");//essa linha sempre será executada, não está atrelada ao ifif((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 ");}}//faltou essa chave
Alguem poderia me explicar, pq a saida deste exercicio é 2 e 3 e nao imprima o 1?
publicstaticvoidmain(String[]args){intx=5;booleanb1=true;booleanb2=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 System.out.print("2 ");//sempre será executado, salvo ocorra execeção!if((b2=true)&&b1);System.out.print("3 ");}
evertonsilvagomesjav1 like
hum vlw galeeeeeeeeeera
evertonsilvagomesjav
Tem como me ajudar nessa questao aqui tb galera? obrigado
Given:10.interfaceFoo{}11.classAlphaimplementsFoo{}12.classBetaextendsAlpha{}13.classDeltaextendsBeta{14.publicstaticvoidmain(String[]args){15.Betax=newBeta();16.// insert code here17.}18.}Whichcode,insertedatline16,willcauseajava.lang.ClassCastException?A.Alphaa=x;B.Foof=(Delta)x;// aqui ele ta tentando converter um beta pra Delta pq nao e valido?C.Foof=(Alpha)x;D.Betab=(Beta)(Alpha)x;// isso aqui e valido? pq?
E
entanglement
Pegue o programa, crie um arquivo .java, e tente compilá-lo. Então vá trocando a tal linha 16 até obter o tal erro ClassCastException.
rmendes08
Desenha o UML da hierarquia de classes e tudo ficará mais claro …
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).
Não sei.
evertonsilvagomesjav
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.
evertonsilvagomesjav
Alguem pode me dizer, se tem como fazer um cast, de regressao, por exemplo:
DogextendsAnimalAnimalanimal;Dogdog=(Dog)animal;
Em algum caso nessa vida pode acontecer de isso ser valido? Ou outra qualquer conversao de regressao.
thundercas
Everton,
Isso é perfeitamente possível…
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…
evertonsilvagomesjav
thunder qual a diferença disso citado a cima pra isso aqui entao:
10.interfaceFoo{}11.classAlphaimplementsFoo{}12.classBetaextendsAlpha{}13.classDeltaextendsBeta{14.publicstaticvoidmain(String[]args){15.Betax=newBeta();16.// insert code here 17.}18.}Foof=(Delta)x;// aqui ele ta tentando converter um beta pra Delta pq nao e valido?
L
lopima
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.
t+
thundercas
A linha 11 está perdida… Imagino que ela deve estar no lugar de // insert code here, correto???
Fiz o teste aqui e funcionou corretamente…
evertonsilvagomesjav
entao quer dizer que ambos os exemplos, funcionam mas dao erro em tempo de execuçao e isso?