Existe alguma diferença de performance ou qualquer outra?

Pessoal,

Existe alguma diferença nisso em termos de compilação, performance (ou qualquer outra coisa…rs)?

System.out.println("BOA TARDE");

ou

[code]final String BOA = “BOA TARDE”;

System.out.println(BOA);[/code]

obrigado!

Não faço a mínima idéia, mas tipo… se fosse considerar a quantidade de linhas a serem compiladas, a primeira opção seria mais eficiente.

Faz sentido né?

“da forma que você colocou ai” não.

mas se você for imprimir duas vezes,

final String BOA = “BOA TARDE”;

System.out.println(BOA);
System.out.println(BOA);

é melhor (pouca coisa) que

System.out.println(“BOA TARDE”);
System.out.println(“BOA TARDE”);

você manter em variável evita que a JVM va procurar a string que vocÊ usou no pool, pesquise sobre o pool de strings que a JVM cria…

Estranho né? Vamos supor que você seja um cara que goste de perfeição.

Um mapa assim:

map.put("nome", pessoa.getNome()); map.put("estado", pessoa.getEstado()); map.put("cidade", pessoa.getCidade());

Teria que ser assim:

[code]final String NOME = “nome”;
final String CIDADE = “cidade”;
final String ESTADO = “estado”;

map.put(NOME, pessoa.getNome());
map.put(CIDADE, pessoa.getEstado());
map.put(ESTADO, pessoa.getCidade());[/code]

e se o mapa tem 50 chaves? e se são 50 mapas, chato programar em java de forma elegante…rsrs

Não. A variável recebe como argumento justamente o endereço da String no pool. Então, no fundo, ambos os códigos tem o println apontando para o mesmo endereço. No caso da variável final, o compilador ainda pode resolver isso, de modo a tornar as duas chamadas idênticas.

Na prática, nenhum dos dois códigos tem a menor diferença de performance.

Hoje criei algo similar, mas com 23 chaves. Todas num enum.
Era em C#, mas o conceito é o mesmo.

Hoje criei algo similar, mas com 23 chaves. Todas num enum.
Era em C#, mas o conceito é o mesmo.[/quote]

Foi o que eu havia pensando. Se estamos falando em Mapas que pretendem compartilhar chaves identicas, melhor criar um Enum que contenha ela.
Mas em termos de perfomance, se você usar um Map com 50 chaves, como citado pelo colega prog e essas chaves forem utiizadas exclusivamente para aquele Mapa, não vejo diferença em usar String com final ou um Enum, particularmente, crio as chaves ao utilizar o método put mesmo.

Estou equivocado ou realmente, em questão de análise de perfomance e qualidade de código, não há diferença alguma nas soluções?
Pergunto porque sei que você já trabalhou em projeto( s ) que faziam exigência de perfomance (conforme vários posts seus aqui).

Abraços.

Em termos de performance, o calculo do hashcode do String, que é usado pelo mapa, é mais lento (isso só será um problema em mapas MUITO acessados ou com Strings grandes de chave). O enum tb é typesafe. É impossível dar um get num enum que não existe, já no String…

Perfeito Viny.
Grato!