📊 Capítulo 04: Bitwise & Manipulação de Strings
Especialização em Sistemas com Java
🗺️ O String Constant Pool e a Imutabilidade no Heap da JVM
flowchart TD
subgraph STACK ["Stack (Pilha de Variáveis)"]
S1["String a = 'Java'"]
S2["String b = 'Java'"]
S3["String c = new String('Java')"]
end
subgraph HEAP ["Heap da JVM"]
subgraph POOL ["String Constant Pool (Memória Compartilhada)"]
P1["'Java' (Mesma instância de memória!)"]
end
OBJ["Objeto String isolado fora do pool!"]
end
S1 --> P1
S2 --> P1
S3 --> OBJ
NOTE["a == b -> true (Apontam para o mesmo endereço no pool!)\na == c -> false (Endereços diferentes! Use SEMPRE a.equals(c)) 🚨"]
HEAP -.-> NOTE
style STACK fill:#ede7f6,stroke:#512da8,stroke-width:2px
style HEAP fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style POOL fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style P1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:1.5px
style OBJ fill:#ffebee,stroke:#d32f2f,stroke-width:1.5px
style NOTE fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
🎯 Slide 1: Operadores Bitwise em Sistemas de Baixo Nível
-
&(AND binário),|(OR binário),^(XOR binário),~(NOT binário),<<e>>(Deslocamento de bits). - Máscaras de Bits (Bitmasking):
int mask = 0b00100000; // 32 (testa se o 6º bit está ligado) if ((n & mask) != 0) { System.out.println("6th bit is TRUE!"); }
🎯 Slide 2: Imutabilidade de String vs StringBuilder
-
No Java, objetos
Stringsão 100% imutáveis. -
Fazer concatenação em loop (
str += "a") cria milhares de objetos intermediários no heap, gerando pressão massiva no Garbage Collector. - Solução: Use
StringBuilderpara mutações de alto desempenho em memória!
🎯 Slide 3: Text Blocks do Java Moderno
String sql = """
SELECT id, nome, email, saldo
FROM usuarios
WHERE ativo = true
ORDER BY nome ASC;
""";
- Strings multilinha limpas sem caracteres de escape
\n!
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim