Em Java, Strings são objetos imutáveis e têm um tratamento especial pela JVM.
Graças ao String Pool, o Java pode reaproveitar literais e economizar memória — como um ninja usando chakra com sabedoria! ⚡
String s1, s2;
s1 = "Naruto"; // 🌀 Literal armazenado no String Pool
s2 = "Naruto"; // 👉 Aponta para o MESMO objeto no pool
s1 = new String("Naruto"); // 🔁 Novo objeto criado FORA do pool
s2 = new String("Naruto"); // 🔁 Outro novo objeto criado — diferente do anterior
| 🧩 Ação | 🍥 Analogia Naruto | 💻 Explicação Java |
|---|---|---|
s1 = "Naruto" |
O Naruto original da Vila 🍜 | Literal criado no String Pool |
s2 = "Naruto" |
Aponta para o mesmo Naruto | Reutiliza o mesmo objeto no pool |
new String("Naruto") |
Clones da Sombra 🌀 | Cria NOVOS objetos no Heap, fora do pool |
📌 Ou seja:
new String() → sempre cria um novo clone==)String s1 = "Naruto";
String s2 = "Naruto";
System.out.println(s1 == s2); // true ✅ - mesma referência no pool
String s1 = new String("Naruto");
String s2 = new String("Naruto");
System.out.println(s1 == s2); // false ❌ - objetos diferentes
.equals())System.out.println(s1.equals(s2)); // true ✅ - conteúdo igual
Mesmo que sejam clones diferentes, eles têm o mesmo “DNA ninja”.