O pool de Strings
Como as strings estão em todo lugar em Java, elas usam muita memória. Em alguns aplicativos de produção podem usar até 25% a 40% da memória em todo o programa. Java percebe que muitas cadeias de caracteres se repetem no programa e resolvem esse problema reutilizando as mais comuns. o pool de strings, também conhecido como pool interno, é um local na Java virtual machine (JVM) que recolhe todas essas strings.
O pool de strings contém valores literais que aparecem no seu programa. Por exemplo, "name" é um literal e, portanto, vai para o pool de strings. myObject.toString() é uma string mas não literal, por isso não entra no pool de strings. As strings que não estão no pool de strings são coletados para o lixo como qualquer outro objeto.
Lembre-se quando dissemos que estas duas linhas são sutilmente diferentes?
String name = "Fluffy";
String name = new String("Fluffy");
O primeiro diz para usar o pool de strings normalmente. O segundo diz “Não, JVM. eu realmente não quero que você use o conjunto de strings. Por favor, crie um novo objeto para mim, mesmo que seja menos eficiente. ” Quando você escreve programas, você não gostaria de fazer isso. Para o exame, você precisa saber que isso é permitido.