NetRunner: Java Mastery Guide 1.0 Help

StringBuffer

Conceitos Básicos

Criação

// Inicialização StringBuffer buffer = new StringBuffer(); StringBuffer preset = new StringBuffer("INIT:"); StringBuffer sized = new StringBuffer(32);

Características Principais

Thread Safety

// StringBuffer é thread-safe public class SafeLogger { private StringBuffer log = new StringBuffer(); public synchronized void addEntry(String entry) { log.append("[") .append(System.currentTimeMillis()) .append("] ") .append(entry) .append("\n"); } }

Comparação com StringBuilder

Diferenças Chave

// StringBuffer: Thread-safe, mais lento StringBuffer safeBuffer = new StringBuffer(); synchronized(safeBuffer) { safeBuffer.append("Thread Safe"); } // StringBuilder: Não thread-safe, mais rápido StringBuilder fastBuilder = new StringBuilder(); fastBuilder.append("Fast"); // Sem sincronização

Operações Básicas

Manipulação

StringBuffer message = new StringBuffer(); // Adição message.append("STATUS: ") // Concatenação .append("ACTIVE") // Encadeamento .append(" - ") .append(2077); // Inserção message.insert(0, "[MSG] "); // Início message.insert(6, "URGENT "); // Meio // Remoção message.delete(0, 5); // Range message.deleteCharAt(10); // Caractere único

Performance

Considerações

// Escolha baseada no contexto public class MessageProcessor { // Use StringBuffer para contextos multi-thread private StringBuffer sharedBuffer = new StringBuffer(); // Use StringBuilder para operações locais public String processLocal() { StringBuilder local = new StringBuilder(); return local.append("Local").toString(); } }

Métodos Úteis

Funcionalidades

StringBuffer cmd = new StringBuffer("EXECUTE"); // Capacidade int cap = cmd.capacity(); // Capacidade atual cmd.ensureCapacity(100); // Garante capacidade mínima // Modificação cmd.setCharAt(0, 'e'); // Modifica caractere cmd.setLength(4); // Trunca ou expande cmd.replace(0, 2, "RE"); // Substitui range // Reversão cmd.reverse(); // Inverte conteúdo

Boas Práticas

Recomendações

// Use StringBuffer quando: public class SharedResource { private StringBuffer sharedLog; // Múltiplas threads public void logEvent(String event) { synchronized(sharedLog) { sharedLog.append(event) .append("\n"); } } } // Prefira StringBuilder quando: public String formatLocal() { StringBuilder local = new StringBuilder(); // Single thread return local.append("Local") .append("Format") .toString(); }

Próximos Passos

Tópicos Relacionados

StringBuilder

26 June 2025