Java防挨骂--01

在遇到字符拼接需求时,习惯使用StringBuilder,而不要使用String.

因为String是不可变字符序列,在拼接时会产生新的String对象来进行拼接

StringBuider是可变字符序列,在拼接时效率和对资源的占用都表现更优。

StringBuffer也是可变字符序列,它与StringBuider的区别有,它更安全(会做线程同步检查),但是效率较低(因为做了检查)。

java 复制代码
package 常用类学习;

public class SStringSsplicing {

    //记住养成习惯,遇到字符串拼接就用 StringBuilder
    public static void main(String[] args) {
        long num1 = Runtime.getRuntime().freeMemory();
        long time1 = System.currentTimeMillis();
        String S="";
        for (int j=1;j<=5000;j++){
            S=S+j; //因为String是不可变序列,故要拼接5000次就要产生5000个新对象,这对一个上线的系统而言是非常不利的
        }
        long num2 = Runtime.getRuntime().freeMemory();
        long time2 = System.currentTimeMillis();
        System.out.println("用String做拼接的后果");
        System.out.println("内存:"+(num1-num2));
        System.out.println("时间:"+(time2-time1));


        long num3 = Runtime.getRuntime().freeMemory();
        long time3 = System.currentTimeMillis();
        StringBuilder S2= new StringBuilder("");
        for (int j=1;j<=5000;j++){
            S2=S2.append(j);
        }
        long num4 = Runtime.getRuntime().freeMemory();
        long time4 = System.currentTimeMillis();
        System.out.println("用StringBuilder做拼接的后果");
        System.out.println("内存:"+(num3-num4));
        System.out.println("时间:"+(time4-time3));

    }
}
相关推荐
无心水几秒前
微服务架构下Dubbo线程池选择与配置指南:提升系统性能与稳定性
java·开发语言·微服务·云原生·架构·java-ee·dubbo
Cestb0n几秒前
某果app 加密校验算法逆向分析
python·算法·逆向安全
Chan163 分钟前
《Java并发编程的艺术》| 并发关键字与 JMM 核心规则
java·开发语言·数据库·spring boot·java-ee·intellij-idea·juc
薛定谔的猫喵喵3 分钟前
解决 xlrd 2.0+ 版本只支持 xls 格式的问题
python·excel
期待のcode13 分钟前
线程睡眠sleep方法
java·开发语言
gjxDaniel14 分钟前
Bash编程语言入门与常见问题
开发语言·bash
汤姆yu14 分钟前
基于springboot的植物花卉销售管理系统
java·spring boot·后端
zhooyu15 分钟前
OpenGL 与 C++:深入理解与实现 Transform 组件
开发语言·c++
2501_9418053118 分钟前
使用Python和Go构建高性能分布式任务调度系统的实践分享
分布式·python·golang
不想写bug呀25 分钟前
RabbitMQ相关问题(1)
java·rabbitmq