| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2009 10:53:58
|
Markinhus86
Debugger
![[Avatar]](/images/avatar/5dec1dd9c7ca4454ec07671f1bc8f941.jpg)
Membro desde: 08/04/2009 10:11:20
Mensagens: 64
Offline
|
Question 224
Given:
42. public class ClassA {
43. public int getValue() {
44.int value=0;
45. boolean setting = true;
46. String title=?Hello?;
47. if (value || (setting && title == ?Hello?)) { return 1; }
48. if (value == 1 & title.equals(?Hello?)) { return 2; }
49. }
50. }
And:
70. ClassA a = new ClassA();
71. a.getValue();
What is the result?
A. 1
B. 2
C. Compilation fails.
D. The code runs with no output.
E. An exception is thrown at runtime.
Answer: C
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2009 11:30:23
|
scarton
Thread.start()
![[Avatar]](/images/avatar/821b7564a31a15c15f5670de9e5e127d.jpg)
Membro desde: 05/06/2007 03:08:43
Mensagens: 25
Localização: Sorocaba/SP
Offline
|
O problema está aqui:
Não podemos fazer comparacoes entre valores inteiros (value) e tipos booleanos...
A linha 48 compila normalmente, considerando que o simbolo ? seja aspas, acredito que foi erro de digitacao...
Abracos
|
Tiago Scarton
SCJP 5.0
SCWCD 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/06/2009 18:16:16
|
Murl
JavaChild
Membro desde: 03/04/2009 10:34:42
Mensagens: 116
Localização: DF
Offline
|
Além do que o scarton falou acho que o método também pede o return...
Porque, mesmo após conserta o if, se nenhum deles for satisfeito o metodo não ira retornar nada, e isso nao pode acontecer!
|
OMW to SCWCD;
SCJP 6 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2009 14:35:09
|
ataufo
Java Ninja
![[Avatar]](/images/avatar/14a31775d302b5e0e25caa93b6d95ff5.jpg)
Membro desde: 21/03/2009 12:15:23
Mensagens: 267
Offline
|
Tem vários erros de compilação:
- Interrogação no lugar de aspas.
- Primeiro if comparando int com boolean
- Segundo if com & onde deveria ser &&
- método getValue() não retorna um int fora dos 2 if´s
|
Victor Soares
ataufo@gmail.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2009 14:47:35
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
ataufo wrote:...
- Segundo if com & onde deveria ser &&
...
Isso não é erro. O operador binário "E" é '&'. '&&' é um operador binário de curto-circuito, assim como "OU" é '|' e o curto-circuito dele é '||'.
Até!
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2009 14:53:34
|
bKn
Java Ninja
Membro desde: 07/04/2009 15:22:18
Mensagens: 288
Offline
|
maquiavelbona wrote:
ataufo wrote:...
- Segundo if com & onde deveria ser &&
...
Isso não é erro. O operador binário "E" é '&'. '&&' é um operador binário de curto-circuito, assim como "OU" é '|' e o curto-circuito dele é '||'.
Até!
Entretanto o operador binário & não deve ser usado para comparar valores que não sejam bits. Isso é tido como erro de programação.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2009 14:55:56
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
Onde viste isso? Se eu precisar que ambas as condições sejam avaliadas isso é considerado um erro de programação?
Se você falar que é feio, podemos discutir longamente, mas falar que é errado usar tem que ter mais argumentos.
Até!
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2009 14:42:43
|
ataufo
Java Ninja
![[Avatar]](/images/avatar/14a31775d302b5e0e25caa93b6d95ff5.jpg)
Membro desde: 21/03/2009 12:15:23
Mensagens: 267
Offline
|
Entretanto o operador binário & não deve ser usado para comparar valores que não sejam bits. Isso é tido como erro de programação.
Olha realmente não sei ainda a diferença de & e &&. Mas que tipo de valores não seriam bits ?
|
Victor Soares
ataufo@gmail.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2009 14:46:53
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Ada é bem mais verbosa que o Java nesse ponto, mas é mais intuitiva.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2009 15:13:38
|
Nykolas Lima
Virtual Machine Man
![[Avatar]](/images/avatar/95f8fbf9e0653a1c0fee3572b5a25042.jpg)
Membro desde: 07/07/2008 13:10:41
Mensagens: 606
Offline
|
ataufo wrote:
Entretanto o operador binário & não deve ser usado para comparar valores que não sejam bits. Isso é tido como erro de programação.
Olha realmente não sei ainda a diferença de & e &&. Mas que tipo de valores não seriam bits ?
A diferença é que o & verifica as duas condições, por exemplo vc tem:
Será verificado se x é maior que zero, mesmo ele sendo maior ou menor que zero, também será verifcado se x é menor que 2.
Caso a expressão fosse:
Se ao verificar se X é maior que zero o X NÃO fose maior que zer, então ele NEM ia verificar se x é menor que 2.
Essa é a diferença, o & compara os dois de quaquer jeito, já o && só compara o outro se o primeiro for verdadeiro.
Abraço
This message was edited 1 time. Last update was at 30/06/2009 15:14:22
|
Blog: http://nykolaslima.wordpress.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2009 15:19:22
|
bKn
Java Ninja
Membro desde: 07/04/2009 15:22:18
Mensagens: 288
Offline
|
maquiavelbona wrote:Onde viste isso? Se eu precisar que ambas as condições sejam avaliadas isso é considerado um erro de programação?
Se você falar que é feio, podemos discutir longamente, mas falar que é errado usar tem que ter mais argumentos.
Até!
Me expressei mal. Esses operadores são usados APENAS nos casos em que você quer obter um resultado específico, como por exemplo o que você citou. Se eu quero comparar um inteiro com outro (E, OU, etc) eu devo utilizar os operadores de curto-circuito, e aí sim utilizar operador binário é um erro de programação.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/07/2009 12:37:35
|
ataufo
Java Ninja
![[Avatar]](/images/avatar/14a31775d302b5e0e25caa93b6d95ff5.jpg)
Membro desde: 21/03/2009 12:15:23
Mensagens: 267
Offline
|
Essa é a diferença, o & compara os dois de quaquer jeito, já o && só compara o outro se o primeiro for verdadeiro.
Entendi. Obrigado.
|
Victor Soares
ataufo@gmail.com |
|
|
 |
|
|