package Exemplo;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Ola Mundo!! " + "\n" + "Estou bem");
[/quote]
opa Rachel, não é bom utilizar concatenação de strings, nesse caso a JVM vai criar três variáveis do tipo String, ao passo que você só precisa de uma.
Eficiência em primeiro lugar.
Neste caso concreto, usar ou não concatenação de strings tem exactamente a mesma eficiência.
O compilador é inteligente para saber que “a” + “b” é igual a “ab”
[quote=pmlm]Neste caso concreto, usar ou não concatenação de strings tem exactamente a mesma eficiência.
O compilador é inteligente para saber que “a” + “b” é igual a “ab”[/quote]
Na realidade há uma diferença de performace…
Isto está implicito na definição de String, vejamos…
"Hahaha uma String"
Na String acima, quando for compilado irá gerar uma única String.
"Hahaha "+ "uma "+"String"
Já neste outro, quando for compilado irá gerar 4 Strings, sendo:
1 - Hahaha
2 - uma
3 - String
4 - Hahaha uma String
Como já disse atrás, o compilador é inteligente para perceber isso…
Se, em compile time, o compilador sabe o valor de uma variável, esse valor é substituído.
A String foi feita para ser imutável. Portanto, não é possível altera-la.
Quando você faz:
String x = “Vinícius”
String y = “Godoy”
String novaString = x + " " + y;
Você criou 4 objetos String. Um deles para a palavra Vinícius, outro para o espaço, outro para a palavra Godoye a String final, com o nome “Vinícius Godoy”.
Como não foi prevista mutabilidade na String, a classe não foi preparada para que operações como a concatenação ou substituição fossem eficientes. A VM consegue otimizar o uso dos strings até certo aspecto, mas ainda sim, é extremamente lento concatenar strings da forma acima.
Para isso, criaram as classes StringBuilder e StringBuffer. Basicamente elas são Strings mutáveis. Foi colocado no projeto dessas classes métodos para alterar ou modificar o conteúdo interno, sem que necessariamente um novo objeto seja criado.
Mais do que isso, o código interno dessas classes foi projetado para ser extremamente rápido. O quão mais rápido, segundo diz o item 33 do capítulo 7 do livro Effective Java, cerca de 9 vezes mais rápido para um bloco de 800 caracteres.[/quote]
Caso ainda tenha dúvidas a respeito veja o post completo: