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! ⚡


🧪 Exemplo no Estilo Ninja

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


🧠 O que está acontecendo?

🧩 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:


⚔️ Comparações

🔍 Comparando Referências (==)

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


🔎 Comparando Conteúdo (.equals())

System.out.println(s1.equals(s2)); // true ✅ - conteúdo igual

Mesmo que sejam clones diferentes, eles têm o mesmo “DNA ninja”.