| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2005 17:46:33
|
proteus_adi
JavaGuru
![[Avatar]](/images/avatar/13d7dc096493e1f77fb4ccf3eaf79df1.jpg)
Membro desde: 24/11/2004 10:05:10
Mensagens: 237
Localização: Belo Horizonte -
Offline
|
esse código funciona belezinha a não ser que o parametro seja nulo ou vazio...
alguem ai tem alguma dica?
testes com IF não foram muito bem sucedidos...
hehe
ps: isso é JavaStoredProcedures
|
"Remember Yesterday and think about tomorrow... but you have to live today"
Existe vitória e existe derrota.
O segundo lugar é o primeiro dos que perderam. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2005 17:53:06
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
1) Porque é que você chama o toString de uma String? (Na prática não muda nada, mas é só pra aporrinhar mesmo). Do jeito que você escreveu o código aquele pessoal fanático por "performance" pediria para corrigir para:
2) O seu IF não é só pra pôr fora do "for" para evitar dar um NullPointerException em param.length()?
3) Você teve sorte porque na sua string não tem nenhum caracter como "\n" cuja representação é "A" e não "0A" pela rotina que você escreveu. Se entrasse algum caracter desses (que tem apenas 1 dígito) você ia ter problemas na hora de recuperar a string original.
>
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2005 18:01:47
|
proteus_adi
JavaGuru
![[Avatar]](/images/avatar/13d7dc096493e1f77fb4ccf3eaf79df1.jpg)
Membro desde: 24/11/2004 10:05:10
Mensagens: 237
Localização: Belo Horizonte -
Offline
|
então deixa eu sugar um pouco mais de teoria...
se uma string for nula.. eu não vou então conseguir usar o string.length()?????
e esse stringBuffer realmente rende tanto assim?
evita coisas do tipo estouro de variável?
e,
valeu..
hehe
|
"Remember Yesterday and think about tomorrow... but you have to live today"
Existe vitória e existe derrota.
O segundo lugar é o primeiro dos que perderam. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2005 18:13:05
|
Sergio Lopes
Moderador
![[Avatar]](/images/avatar/8232e119d8f59aa83050a741631803a6.jpg)
Membro desde: 17/11/2003 00:22:10
Mensagens: 1368
Localização: São Paulo - SP
Offline
|
proteus_adi wrote:então deixa eu sugar um pouco mais de teoria...
se uma string for nula.. eu não vou então conseguir usar o string.length()?????
nao... vc nao pode chamar metodos em cima de uma referencia pra null
proteus_adi wrote:e esse stringBuffer realmente rende tanto assim?
rende se vc usar 1 zilhao de concatenacoes...
pras coisas gerais do dia a dia, use concatenacao de Strings mesmo que rende muito mais em clareza de codigo
E agora tem o StringBuilder tbm no java 5 q eh divertido
proteus_adi wrote:evita coisas do tipo estouro de variável?
hein?!
|
Sérgio Lopes - twitter: @sergio_caelum - blog pessoal: sergiolopes.org
Curso Java | Apostilas Java | Arquitetura Java | Curso Rails |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2005 18:22:56
|
proteus_adi
JavaGuru
![[Avatar]](/images/avatar/13d7dc096493e1f77fb4ccf3eaf79df1.jpg)
Membro desde: 24/11/2004 10:05:10
Mensagens: 237
Localização: Belo Horizonte -
Offline
|
3) Você teve sorte porque na sua string não tem nenhum caracter como "\n" cuja representação é "A" e não "0A" pela rotina que você escreveu. Se entrasse algum caracter desses (que tem apenas 1 dígito) você ia ter problemas na hora de recuperar a string original.
eu não entendi da primeira vez..
o que vc quer dizer com isso?
essa rotina não funciona pra qqer string???
|
"Remember Yesterday and think about tomorrow... but you have to live today"
Existe vitória e existe derrota.
O segundo lugar é o primeiro dos que perderam. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2005 18:27:24
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Vamos por partes.
Integer.toHexString(int) lhe volta uma string hexadecimal, sem zeros à esquerda. Assim: Integer.toHexString (' ') lhe retorna "20", que é o código hexadecimal do espaço.
Suponha que sua string tivesse algum caracter como um ENTER ("\n", ou 0x0A). Isso não é incomum mas não sei se você quer isso mesmo ou não. O que vai ocorrer é que Integer.toHexString('\n') vai lhe retornar "A", não "0A".
Como o Oracle quer a string hexadecimal com 2 dígitos para cada caracter, a partir desse caracter as coisas vão ficar fora de sincronia.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2005 18:44:58
|
proteus_adi
JavaGuru
![[Avatar]](/images/avatar/13d7dc096493e1f77fb4ccf3eaf79df1.jpg)
Membro desde: 24/11/2004 10:05:10
Mensagens: 237
Localização: Belo Horizonte -
Offline
|
deixa eu ver então se eu entendi...
eu tenho que fazer uma implementação do tipo..
se tamanho retorno menor que dois adiciona um 0???
eu tive mesmo problemas com enters e tabs..
eu uso um replace antes de rodar isso..
rs**
e tiro os espaços excessivos tambem...
mas a solução seria isso?
ou seria melhor uma tabela?
|
"Remember Yesterday and think about tomorrow... but you have to live today"
Existe vitória e existe derrota.
O segundo lugar é o primeiro dos que perderam. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2005 19:40:05
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Tem dois jeitos.
Um deles é fazer na unha - se procurar tem um monte de gente que faz assim. (Com tabela 0,1,2,3...A,B,C,D,E,F). Não é difícil mas tem de tomar cuidado.
Outro é usar um truque sujo, que pelo visto é usado por um monte de gente (outro dia tinha visto no forum.java.sun.com um cara usando isso.)
Digamos que você tenha um caracter 0x0A.
O que ocorre quando você faz um OR (|) desse valor com 0x100? Vai ficar como 0x10A, e na hora que você for achar Integer.toHexString, vai valer 10A. Aí o que eu faço é pegar do 2o. caracter em diante.
Resumindo:
Integer.toHexString (((param.charAt(i) & 0xFF) | 0x100).substring(1);
(O outro truque é usar & 0xFF, que deixa o valor no intervalo entre 00 e FF. S por acaso você tiver um caracter cujo código Unicode passar de 0xFF, ele vai ser podado, mas em português são raros esses caracteres.)
This message was edited 1 time. Last update was at 25/05/2005 19:41:28
|
|
|
 |
|
|