String的实例是final不可变的,对string的任何操作每次都会新建一个string,效率低下。stringBuilder则只是new了一次就可以进行字符串的改变。stringBuffer只是比stringBuilder线程安全而已,当然效率也比stringBuilder低一点。
算法复杂度分时间复杂度和空间复杂度,空间复杂度指占用内存空间大小。时间复杂度指计算工作量:
时间复杂度
计算时间复杂度的方法:
- 用常数1代替运行时间中的所有加法常数
- 修改后的运行次数函数中,只保留最高阶项
- 去除最高阶项的系数
按数量级递增排列,常见的时间复杂度有:
常数阶O(1)
,对数阶O(log2n)
,线性阶O(n)
,
线性对数阶O(nlog2n)
,平方阶O(n^2)
,立方阶O(n^3)
,…,
k次方阶O(n^k)
,指数阶O(2^n)
。
随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。