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

    }
}
相关推荐
Data_Journal1 小时前
用于网页抓取的 Node-unblocker
大数据·开发语言·数据库·python·scrapy
吴声子夜歌1 小时前
Java面试——算法
java·算法·面试
evans在进步1 小时前
LeetCode 64:最小路径和——Java 原地动态规划详解
java·leetcode·动态规划
豆角焖肉1 小时前
SSM 聚合项目搭建:多 Maven 模块项目
开发语言·python·pycharm
Frank_refuel1 小时前
【C++八股】面向对象
开发语言·c++
青 春 记 忆2 小时前
零基础入门python20:Flask配置、扩展和蓝图拆分
python·flask·后端开发
m0_380743872 小时前
为 OpenAI 兼容接口配置教程
开发语言·python·node.js
凤山老林3 小时前
Spring Boot 3.x AOT 编译实战:从原理、踩坑到生产落地
java·spring boot·后端
博傅3 小时前
Spring 核心原理
java·后端·spring
yurenpai(27届找实习中)3 小时前
从零读懂 AI 智能客服(一):模块职责与 SSE 聊天链路(后端架构)
java·人工智能·架构·langchain4j