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

    }
}
相关推荐
qq_339191141 分钟前
go cpu占比高排查,cpu100%排查,go pprof cpu命令
开发语言·后端·golang
西西弗Sisyphus6 分钟前
Qt 配置文件图标和文件版本信息
开发语言·qt
坐吃山猪9 分钟前
IDEA调试中Evaluate常用操作
java·python·intellij-idea
秋田君13 分钟前
Qt_Qt(c++)开发中常见错误与解决方法
开发语言·c++·qt
Tizzy JJ20 分钟前
接口自动化测试实战:如何围绕真实业务场景设计高质量用例
python·自动化·pytest
海兰23 分钟前
【 Python 量化交易】第10章:八大经典策略
android·python·kotlin
吴长建先生27 分钟前
ASP.NET Core WebAPI 服务在 IM 即时
java
MuMuMu122330 分钟前
文旅户外场景智能回收终端工程难点解析:越华环保集团碳惠小屋耐候与供电系统实践
java·大数据·算法
夏霞31 分钟前
c# 不支持的目标框架 解决方案
开发语言·c#
偷偷写博客33 分钟前
Gitee → GitHub 自动同步配置手册
java