java循环创建String对象很浪费时间吗?
如果是,那么用什么方法可以优化时间?
如果是,那么用什么方法可以优化时间?
解决方案 »
- 菜鸟求助:Spring中HibernateTemplate的使用问题,报空指针的问题
- 除了SSH组合,你还会用什么?
- 请问学习JAVA嵌入式开发应该读什么书先?谢谢.
- 如何动态显示jsp里面的div内容
- 关于为每个用户单独设置 session timeout 的问题
- 这有一个系统,请帮我运行下
- 一个 web services的小例子的错误:
- 一台服务器,2个ip,tomcat能同时连接\操作两个网络上的数据库服务器吗?
- 求教接到一个WSDL后改如何进行开发?
- 一个关于EJB的最基本的问题,解决了高分相送,只限今天!!!!!
- 必须窗口最大化以后才能显示出图片
- 问题:jboss7.1.1+myeclipse10 项目部署成功,运行后出现的ERROR
如果次数非常频繁。 那就用StringBuffer
你看一下jdk源码就可以知道,其实String连接字符串也是用的StringBuffer实现的。然后到最后使用toString()方法重新转换成String
String和StringBuffer的区别是:
例如:String a1= "a";
String a2= "b";
String a3= a1+a2;
在程序中,会为a1,a2,a3分别开辟内存地址,所以这就是为什么判断字符串相等要用equals()方法了。
所以在循环体中,String连接时会不断的创建内存空间,不仅效率低,还耗内存。
但是StringBuffer是一个特殊的类型,他不会重新创建内存空间,是在原来的地址空间上增长,效率会高一些。
所以,如果存在循环,需要反复连接很多次字符串,就用StringBuffer
StringBuffer str = new StringBuffer("");
for(i=0;i<20;i++){
str = str.append("a");
}
String string = str.toString();
在上面的例子中,StringBuffer用append方法连接字符串,最后需要toString转换成String类型。
StringBuffer 对象里面直接添加数据。效率较高。
你看一下jdk源码就可以知道,其实String连接字符串也是用的StringBuffer实现的。然后到最后使用toString()方法重新转换成String
String和StringBuffer的区别是:
例如:String a1= "a";
String a2= "b";
String a3= a1+a2;
在程序中,会为a1,a2,a3分别开辟内存地址,所以这就是为什么判断字符串相等要用equals()方法了。
所以在循环体中,String连接时会不断的创建内存空间,不仅效率低,还耗内存。
但是StringBuffer是一个特殊的类型,他不会重新创建内存空间,是在原来的地址空间上增长,效率会高一些。
所以,如果存在循环,需要反复连接很多次字符串,就用StringBuffer
StringBuffer str = new StringBuffer("");
for(i=0;i<20;i++){
str = str.append("a");
}
String string = str.toString();
在上面的例子中,StringBuffer用append方法连接字符串,最后需要toString转换成String类型。