Questões de Certificação

18 respostas
L

Pessoal nao entendii essas duas questoes abaixo . A resposta da 9 é " d " e da 13 é f . Alguem poderia me dar um toque ??

Question 9

class A {

public static void main (String[] args) {

float a = 1;            // 1

float b = 1L;           // 2

float c = 1F;           // 3

float d = 1.0;          // 4

}

}

A compile-time error is generated at which lines?

a. 	1

b. 	2

c. 	3

d. 	4

e. 	None of the Above

Question 13

class Orange {

public static void main (String[] args) {

char c = u000a; // ‘u000a’ = Linefeed

System.out.print(ABC + c);

}

}

What is the result of attempting to compile and run the program?

a. 	Prints: ABC

b. 	Prints: ABCc

c. 	Prints: ABC10

d. 	Prints: ABCa

e. 	Prints: ABC0x000a

f. 	Compiler error.

g. 	Runtime error.

h. 	None of the Above

18 Respostas

Luca

Olá

Na 1a questão há uma tentativa de colocar um double em um float. Dá erro de compilação pela possível perda de precisão.

Na 2a questão responda vc mesmo experimentando fazer:

. . . .
char c = '\u000a';
. . .

e veja o que ocorre.

[]s
Luca

maxguzenski

9:
porque todo o ponto flutuante é um double em java, log:
float d = 1.0f; //compila
float d = 1.0; //nao compila
float d = (float)1.0; //compila

13:
porque o numerom que vem depois de \u deve ser um octadecimal e nao hexadecimal.

elvishr

Porque as linhas

float a = 1;

float b = 1L;

float c = 1F;

não geraram erro???

caiofilipini

Porque:

float a = 1; // 1 é int por default, menor que float float b = 1L; // o sufixo L indica que é um long, também menor que float float c = 1F; // o sufixo F indica que é um float, e está sendo armazenado em outro float...

:smiley: :wink:

Rafael_Nunes

Alguem poderia explicar melhor a questão 2? Fiquei meio em dúvida, eu testei e não compilou, mas por quê?

Luca

Olá

Faltava uma barra invertida () na declaração do char unicode.

[]s
Luca

Luca

Olá

Ei, preciso fazer uma correção:

No segundo problema faltou explicar que como o Java tem ‘\n’ para linefeed e ‘\r’ para retorno de carro e pelo modo como são processados os escapes unicode, então não é valido usar ‘\u000a’ em vez de ‘\n’ e ‘\u000d’ ao invés de ‘\r’.

Segundo a JLS, pelo modo como os escapes unicode são processados a declaração:

char c = '\u000a';

é processada como se fosse declarada como:

char c = '
';

Esta questão é boa de ser discutida porque a mensagem de erro do compilador “illegal line end in character literal” é bem pouco esclarecedora:

D:\>javac Orange.java
Orange.java:3: illegal line end in character literal
char c = '\u000a'; // '\u000a' = Linefeed
         ^
1 error

D:\>javac Orange1.java
Orange1.java:3: illegal line end in character literal
char c = '\u000d'; // '\u000d' = Carriage return
         ^
1 error

D:\>

Então não era somente a falta da barra invertida como aparentava. Na verdade a falta da barra deve ter sido só aqui no nosso fórum, a questão do teste real possivelmente estava com a barra. A linha correta seria:

char c = '\n'; // '\n' = Linefeed

PS: Interessante, editei esta mensagem e ela ficou exatamente como a JLS diz. Precisei reeditar para recolocar \ no lugar das .

[]s
Luca

Rafael_Nunes

Ainda não entendi por quê não posso declarar

char c = ‘u000a’;

A

Porque não fica como você escreveu…
a linha é quebrada… portanto não compila!

char c = '
';
maxguzenski

é, tenta rodar esse codigo, talves vc entenda

String A = "Teste do unicode";
System.out.print( u0041 );
Rafael_Nunes

Sim, eu entendi que escreveram errado, tinha um
alí. Mas eu queria saber por quê um char c = ‘u000a’ também não compila.

maxguzenski

esse codigo compila e roda:

String A = "Teste do unicode"; 
System.out.print( \u0041 );
Rafael_Nunes

Mas este não, por quê?

class A { public static void main(String args[]) { char c = 'u000a'; System.out.prinln(c); } }

caiofilipini

“Rafael Nunes”:
Mas este não, por quê?

class A { public static void main(String args[]) { char c = 'u000a'; System.out.prinln(c); } }

Porque o uso do \u indica que é um caractere Unicode. Se você não colocar a , você estará tentando inicializar um char com 5 caracteres, o que é impossível. :wink:

[]'s

Rafael_Nunes

Ah sim, agora entendi. Taí coisas que eu não sabia.

u denota Unicode
E um char não pode ter 5 caracteres. Mas um char não equivale a um short, ou seja, 16 bytes? Quantos caracteres eu posso ter em um char então?

caiofilipini

Opa, um short tem 16 bits, não 16 bytes.

Um único caractere. Um char tem 16 bits porque os caracteres Unicode, que é o padrão usado em Java, têm 16 bits. :wink:

[]'s

cv1

Bits, caio, bits! :smiley:

caiofilipini

Bits, caio, bits! :D

Oops! Fui na onda do Rafael… :roll: :lol:

Criado 7 de janeiro de 2004
Ultima resposta 8 de jan. de 2004
Respostas 18
Participantes 8