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));

    }
}
相关推荐
道可到7 小时前
Java 反射现代实践速查表(JDK 11+/17+)
java
用户8356290780517 小时前
从手动编辑到代码生成:Python 助你高效创建 Word 文档
后端·python
侃侃_天下7 小时前
最终的信号类
开发语言·c++·算法
c8i7 小时前
python中类的基本结构、特殊属性于MRO理解
python
道可到7 小时前
Java 反射现代实践指南(JDK 11+ / 17+ 适用)
java
玉衡子8 小时前
九、MySQL配置参数优化总结
java·mysql
叽哥8 小时前
Kotlin学习第 8 课:Kotlin 进阶特性:简化代码与提升效率
android·java·kotlin
麦兜*8 小时前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
带刺的坐椅8 小时前
DamiBus v1.1.0 发布(给单体多模块解耦)
java·事件总线·damibus
葡萄城技术团队8 小时前
用 Java 构建健壮 REST API 的 4 个关键技巧
java