- StringBuilder相比StringBuffer效率更高,但多线程不安全;
- 在单线程中字符串的频繁拼接使用StringBuilder效率更高,对于多线程使用StringBuffer则更安全;
- 字符串简单操作时没必要使用上述两者,还是用String类型提高速度;
@HotSpotIntrinsicCandidate
public StringBuilder append(String str) {
super.append(str);
return this;
}
/**
* A cache of the last value returned by toString. Cleared
* whenever the StringBuffer is modified.
* https://www.cnblogs.com/robothy/p/13895241.html
*/
private transient String toStringCache;
@HotSpotIntrinsicCandidate
public synchronized StringBuffer append(String str) {
this.toStringCache = null;
super.append(str);
return this;
}
JDK的源码中,被@HotSpotIntrinsicCandidate标注的方法,在HotSpot中都有一套高效的实现,该高效实现基于CPU指令,运行时,HotSpot维护的高效实现会替代JDK的源码实现,从而获得更高的效率。