


Introduction to the differences between String, StringBuffer and StringBuilder in Java
String, StringBuffer, and StringBuilder in java are string classes that are often used in programming. The differences between them are also questions that are often asked in interviews. Now let’s summarize and see their differences and similarities.
1. Variable and Immutable
The String class uses a character array to save the string, as shown below. Because of the "final" modifier, you can know that the string object is immutable.
private final char value[]; changing.
Char[] value;
2. Is it multi-thread safe?
The objects in String are immutable and can be understood as constants, which is obviously thread-safe.
AbstractStringBuilder is the common parent class of StringBuilder and StringBuffer. It defines some basic operations of strings, such as expandCapacity, append, insert, indexOf and other public methods.
StringBuffer adds a synchronization lock to the method or adds a synchronization lock to the calling method, so it is thread-safe. Look at the following source code:
public synchronized StringBuffer reverse() { super.reverse(); return this; } public int indexOf(String str) { return indexOf(str, 0); //存在 public synchronized int indexOf(String str, int fromIndex) 方法 }
StringBuilder does not add synchronization locks to the method, so it is not thread-safe.
3. What StringBuilder and StringBuffer have in common
StringBuilder and StringBuffer have a common parent class, AbstractStringBuilder (abstract class).
One of the differences between abstract classes and interfaces is that abstract classes can define some public methods of subclasses. Subclasses only need to add new functions and do not need to rewrite existing methods; while interfaces only need to add new functions. Declaration of methods and definition of constants.
The methods of StringBuilder and StringBuffer will call the public methods in AbstractStringBuilder, such as super.append(...). It's just that StringBuffer will add the synchronized keyword to the method for synchronization.
Finally, if the program is not multi-threaded, then using StringBuilder is more efficient than StringBuffer.
For more related articles introducing the differences between String, StringBuffer, and StringBuilder in Java, please pay attention to the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

Field mapping processing in system docking often encounters a difficult problem when performing system docking: how to effectively map the interface fields of system A...

Analysis of memory leak phenomenon of Java programs on different architecture CPUs. This article will discuss a case where a Java program exhibits different memory behaviors on ARM and x86 architecture CPUs...

Start Spring using IntelliJIDEAUltimate version...

Questions and Answers about constant acquisition in Java Remote Debugging When using Java for remote debugging, many developers may encounter some difficult phenomena. It...

Troubleshooting and solutions to the company's security software that causes some applications to not function properly. Many companies will deploy security software in order to ensure internal network security. ...

Discussing the hierarchical architecture problem in back-end development. In back-end development, common hierarchical architectures include controller, service and dao...

How to convert names to numbers to implement sorting within groups? When sorting users in groups, it is often necessary to convert the user's name into numbers so that it can be different...
