为什么Java StringBuilder的效率要比String高?

为什么Java StringBuilder的效率要比String高?

概述

在Java中,字符串拼接很常见,为什么总是说StringBuilder的效率要比String高呢,大概原因就是String是不可变对象,而StringBuilder在拼接时只是把字符串转为char拷贝到char[]。具体如下

String不可变

String对象不可变,则每次拼接都会创建新的String对象。即使在新的jdk有对String+的优化,仍然是效率不够高,比如每次循环拼接时都会被自动创建一个StringBuider对象来append,最后还会将该对象调用toString()方法。

具体优化方法,可以对代码编译后使用javap命令查看生成的字节码指令。

StringBuilder效率高

StringBuilder其实就是个char[],append时,是将String对象转为char后放入StringBuilder的char[]内。当长度不够放时,对该char[]扩容即可。

参考文档

  • 为什么StringBuilder的效率要比String高?
  • javap的基本用法

你可能感兴趣的:(java)