java string 比较 效率_String、StringBuffer、StringBuilder效率比较

String

Java中的String对象是final的,即 String 对象被创建之后就无法再对其进行修改。也就是说,尽管 String 类提供了替换(replace)、截取子串(subString)等方法,但这些方法都不是直接对原始的 String 对象进行操作,其操作结果会生成一个全新的字符串对象。当我们使用 + 来连接两个 String 对象的时候,该操作同样是创建出一个全新的字符串对象。

示例代码:

String str = “aaabbbcccddd”;

String newStr = str.replace(‘a’, ‘A’);

System.out.println(newStr);

说明:

替换之后的结果是生成了一个全新的字符串对象:newStr 。

StringBuffer

StringBuffer类是对String类的一个补充,它用来表示内容可变的字符串,并提供了修改底层字符串的方法。StringBuffer类从 JDK 1.0 就已经提供。

该类是线程安全的。

示例代码:

StringBuffer sb = new StringBuffer(“aaabbbcccddd”);

sb.replace(0, 3, “AAA”);

System.out.println(sb.toString());

说明:

直接在 StringBuffer对象上进行操作。

StringBuilder

我们可以将 StringBuilder 类看做是对 StringBuffer 的进一步补充。StringBuilder 类也表示内容可变的字符串,并且该类与 StringBuffer 有着相同的操作界面,唯一的区别就是 StringBuilder 类不是线程安全的。

JDK 1.5 开始提供 StringBuilder 类。

效率的比较:

String str = “”;

long beginTime = System.currentTimeMillis();

for (int i = 0; i < 999999; i++){

str = str + i;

}

long endTime = System.currentTimeMillis();

System.out.println("执行时间:" + (endTime - beginTime));

运行时间太长了,没有等到程序运行结束就被我直接终止了。

StringBuffer buffer = new StringBuffer(“”);

long beginTime = System.currentTimeMillis();

for (int i = 0; i < 999999; i++){

buffer.append(i);

}

long endTime = System.currentTimeMillis();

System.out.println("执行时间:" + (endTime - beginTime));

输出:

执行时间:250

StringBuilder builder = new StringBuilder(“”);

long beginTime = System.currentTimeMillis();

for (int i = 0; i < 99999; i++){

builder.append(i);

}

long endTime = System.currentTimeMillis();

System.out.println("执行时间:" + (endTime - beginTime));

输出:

执行时间:188

在数量级相对较小的时候,StringBuffer和StringBuilder的区别不大,只有当数量级相对较大的时候才能体会到他们两个之间的效率差别。

StringBuffer为了做到线程安全,牺牲一定的效率是必然的。

在java中,String + StringBuffer + StringBuilder 基本涵盖了java字符串操作的所有方面,掌握好这三个工具类,基本的字符串处理可以无忧了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值