Pq a compilação Falha?  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
Markinhus86
Debugger
[Avatar]

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
scarton
Thread.start()
[Avatar]

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
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
ataufo
Java Ninja
[Avatar]

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
[Email] [MSN] [ICQ]
maquiavelbona
JWizard
[Avatar]

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)
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.
maquiavelbona
JWizard
[Avatar]

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)
ataufo
Java Ninja
[Avatar]

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
[Email] [MSN] [ICQ]
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.

[WWW]
Nykolas Lima
Virtual Machine Man
[Avatar]

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
[WWW]
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.
ataufo
Java Ninja
[Avatar]

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
[Email] [MSN] [ICQ]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team