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

    }
}
相关推荐
b***65327 分钟前
GO 快速升级Go版本
开发语言·redis·golang
李晨卓10 分钟前
python学习之不同储存方式的操作方法
python·代码规范
站大爷IP13 分钟前
实战:爬取某联招聘职位需求并生成词云——从零开始的完整指南
python
deephub15 分钟前
从零开始:用Python和Gemini 3四步搭建你自己的AI Agent
人工智能·python·大语言模型·agent
咕白m62519 分钟前
Python 实现 PDF 页面旋转
python
Carve_the_Code20 分钟前
分布式订单系统:订单号编码设计实战
java·后端
Home20 分钟前
23种设计模式之代理模式(结构型模式二)
java·后端
程序员西西22 分钟前
详细介绍Spring Boot中用到的JSON序列化技术?
java·后端
雨中飘荡的记忆23 分钟前
MySQL 优化实战
java·mysql
豆豆的java之旅25 分钟前
深入浅出Activity工作流:从理论到实践,让业务流转自动化
java·运维·自动化·activity·工作流