Kubernate

Thursday, November 13, 2025

Java - String is Immutable (String Buffer & Builder are Mutable)

 You're absolutely right — in Java (and many other languages like Python and C#), strings are immutable, meaning once a String object is created, its value cannot be changed. Here's a deeper look into what that means and why it's important:


๐Ÿ”’ What Does "Immutable" Mean for Strings?

  • No in-place modification: You can't change the characters of a string directly. Any operation that seems to modify a string actually creates a new string object.

    String s = "Hello";
    s = s + " World";  // Creates a new string "Hello World"
    
  • Memory efficiency via String Pool: Java uses a String pool to store string literals. When you create a string like "Hello", Java checks the pool first to reuse existing objects, saving memory.


⚙️ Why Are Strings Immutable?

  • Security: Strings are often used in sensitive operations like file paths, network connections, and class loading. Immutability ensures these values can't be changed maliciously.

  • Thread safety: Immutable objects are inherently thread-safe since their state can't change after creation.

  • Hashing: Strings are commonly used as keys in hash-based collections like HashMap. Immutability ensures the hash code remains consistent.


๐Ÿงต What If You Need Mutable Strings?

Use these classes instead:

Class Description
StringBuilder Mutable, not thread-safe. Best for single-threaded scenarios.
StringBuffer Mutable and thread-safe. Suitable for multi-threaded use.

Example:

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb.toString());  // Outputs: Hello World


No comments:

Post a Comment

Spring Boot - Bean LifeCycle

 Here is a clear, step-by-step lifecycle of a Spring Boot application , explained in a simple + interview-ready way. ๐Ÿ”„ Spring Boot Applica...

Kubernate