Tava estudando para a certificação e observei o seguinte detalhe…
Cuidado com esses métodos nas classes empacotadoras do java.lang!
São métodos que SÓ aceitam STRINGS como parâmetros!
Observem o seguinte trecho:
long l = Long.parseLong(“23L”);
long l = Long.parseLong(“2.0”); // ATENÇÃO AQUI! ***
long l = Long.parseLong(“2.3L”);
long l = Long.parseLong(“0x23”); // Em haxadecimal
long l = Long.parseLong(“0X23”); // Em haxadecimal
-> Todas as formas acima produzem ERRO de Runtime: NumberFormatException!
Só são aceitas apenas as seguintes formas:
long l = Long.parseLong(“34”);
long l = Long.parseLong(“23”);
long l = Long.parseLong(“034”); // Em octal
Essas…compilam e rodam sem problemas!
***Outra observação, a forma:
float f = Float.parseFloat(“2.0”);
É perfeitamente legal! Só não rola o 2.0 no caso de números inteiros!
Outra importante observação…
O parseXxx() retorna SEMPRE um valor primitivo e o valueOf retorna um OBJETO empacotador (Integer, Float, Long, Byte, Short, Double).
Valeu pela dica Tjmm eu ainda não cheguei nesta parte nos meus estudos…mas mesmo assim reconheço o valor das dicas que vc citou… :!: (alguma idéia para estudos em conjunto ou coisa do tipow manda uma mensagem privada pra mim ae…falow)
eu posso estar enganado,
mas quando você passa uma string como parâmetro
usando parseXxxx… , você pode passar também um segundo parametro
indicando a base…
Acho q ele não identifica valores na base octal por exemplo como vocÊ
mencionou…
senão ele também converteria o valor para hexadecimal … mas nesse caso
existe um x e naum um 0 (zero)…por isso que naum lanca NumberFormatException …
não tenho absoluta certeza porque não testei ainda …
eu lembro que já precisei instanciar um Long, que continha um octal recebendo o mesmo como uma string … e tive que passar a base , como o segundo argumento…mas isso já tem tempo, nem sei se foi na 1.2 ainda…
[quote=Java Vinicius Machine]Valeu pela dica Tjmm eu ainda não cheguei nesta parte nos meus estudos…mas mesmo assim reconheço o valor das dicas que vc citou… :!: (alguma idéia para estudos em conjunto ou coisa do tipow manda uma mensagem privada pra mim ae…falow)[/quote]
Até onde eu sei dia 01/02 estaremos começando um grupo de estudos pra certificação, basta esperar… o danieldestro ficou responsavel em organizar as aulas e as passa-las, as aulas serão ministradas através do lohis www.lohis.com.br valeu? até mais…
eu posso estar enganado,
mas quando você passa uma string como parâmetro
usando parseXxxx… , você pode passar também um segundo parametro
indicando a base…
Acho q ele não identifica valores na base octal por exemplo como vocÊ
mencionou…
senão ele também converteria o valor para hexadecimal … mas nesse caso
existe um x e naum um 0 (zero)…por isso que naum lanca NumberFormatException …
não tenho absoluta certeza porque não testei ainda …
eu lembro que já precisei instanciar um Long, que continha um octal recebendo o mesmo como uma string … e tive que passar a base , como o segundo argumento…mas isso já tem tempo, nem sei se foi na 1.2 ainda…
é só isso!
[/quote]
Exato fmartins!
Não citei o outro parâmetro, porque o post iria ficar muito grande e observei nos exercícios que fiz até agora, que o que eles mais pedem é apenas a versão do método com um único parâmetro!
Sobre a linha:
long l = Long.parseLong(“034”);
Não irá haver conversão de octal para decimal não! Só quis dizer que é uma construção válida! Nesse caso, l (ele) receberá 34 em decimal mesmo!