Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Criação de String

Em estudo vi um exercício que me deixou um dúvida. Não recordo exatamente qual era o exemplo, mas consistia em algo semelhante ao exemplo que darei abaixo e gostaria de validação no entendimento.

Enunciado

Quantas strings foram criadas no código abaixo?

class Main{
    public static void main(String... args){
        String str = "Crepúsculo";
        String str2 = new String("Crepúsculo");
    }
}

Pelo que percebo a resposta seria duas strings criadas, sendo uma literal e outra indireta - a primeira armazenada na string pool, já a segunda armazenada na heap. Acredito que seja essa a resposta correta porque a string Crepúsculo já havia sido criada na linha 3, portanto ao ser passada como argumento seria utilizada a referência da string já existente na string pool.

Dada minha explicação para a resposta gostaria de uma validação para a interpretação no parágrafo anterior, para saber se analisei corretamente.

Para fins exemplificativos entendo que a resposta seria diferente no exemplo do código abaixo:

class Main{
    public static void main(String... args){
        String str3 = "Lua Nova";
        String str4 = new String("Eclipse");
    }
}

Neste último caso a resposta seria a criação de três strings:

  1. linha 3 ("Lua Nova");
  2. linha 4 (objeto criado com new);
  3. linha 4 (a string "Eclipse" era inexistente na string pool, portanto foi criada na string pool no momento que passada como argumento do construtor).

Destarte, solicito avaliação do entendimento passado acima e correção, no caso de haver falhas.

Agradecido.

1 resposta
solução!

A dúvida foi esclarecida em aula posterior (aula 10), em que foi utilizado exemplo semelhante. A diferença consistia em linhas de código a mais, onde nas impressões e comparações poderiam ou não ser criadas novas strings.

Caso alguém tenha a mesma dúvida, sugiro que assista o vídeo da Aula 10 do curso em destaque.