Entender como o Java armazena dados é como dominar um jutsu básico antes de aprender técnicas avançadas. Vamos deixar tudo fácil — e com um toque ninja! 🍥⚔️


🧠 Valor de Memória x Referência de Memória


🔢 Valor de Memória (Tipos Primitivos)

Armazena diretamente o dado dentro da variável.

int a = 5;
int b = a;
b = 10;

System.out.println(a); // 5
System.out.println(b); // 10

📌 Aqui, a e b são variáveis independentes.

Mesmo que b mude, a continua intacto — como dois clones que não compartilham dor 👥✨.


🗂️ Referência de Memória (Objetos)

A variável guarda um endereço na memória, apontando para o objeto real.

String[] time7 = {"Naruto", "Sasuke"};
String[] time7Copia = time7;

time7Copia[0] = "Sakura";

System.out.println(time7[0]); // Sakura

📌 Aqui, time7 e time7Copia estão apontando para o mesmo objeto, como dois ninjas sincronizados via Ino-Shin! 🧠🔗


🎭 toString(): Mostrando o Lado Humano do Objeto


📦 Antes de Sobrescrever

Quando você imprime um objeto sem personalizar toString(), recebe algo assim:

RefMemoriaXValorMemoria.Uzumaki@5f184fc6