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

    }
}
相关推荐
belong_my_offer11 小时前
在Pycharm中安装conda的保姆级教学
python
jllllyuz11 小时前
MATLAB实现滚动轴承故障诊断(外圈故障)
开发语言·人工智能·matlab
github_czy11 小时前
更加优雅的类型检查与传参---mcp源码分析
java·服务器·开发语言
CTA终结者11 小时前
期货量化合约代码写错:天勤 symbol 格式与 silent 订阅坑
python·区块链
c_lb728811 小时前
期货程序化撤单改价后仓位乱了:cancel_order 与 TargetPosTask 协作
python
专注_每天进步一点点11 小时前
IDEA中,Apifox Helper 的 2.0.15-243版本的插件 导出指定的接口,入参的中文名为空,描述为空
java·ide·intellij-idea
Irissgwe11 小时前
C++ STL关联式容器详解:set、multiset、map、multimap
开发语言·c++·stl·set·map·multiset·关联式容器
兰令水11 小时前
leecodecode【区间DP+树形DP】【2026.6.10打卡-java版本】
java·算法·leetcode
叶帆11 小时前
【YFIOs】用C#开发硬件之WiFi网络
开发语言·网络·c#
meilindehuzi_a11 小时前
深入理解 JavaScript 的同步与异步机制:从单线程设计到 Promise 核心应用
开发语言·javascript·ecmascript