zoukankan      html  css  js  c++  java
  • 廖雪峰Java2面向对象编程-6Java核心类-2StringBuilder

    字符串操作过程中,每次用 + 拼接字符串,有以下问题:

    • 每次循环都会创建新的对象
    • 绝大部分都是临时对象。浪费内存
    • 影响GC效率
            String s = "";
            for(int i=0;i<1000;i++){
                s = s +String.valueOf(i);
            }
            System.out.println(s);
    

    为了解决这个问题,Java提供了StringBuilder类,可以高效的拼接字符串

    1.StringBuffer类

    • StringBuilder是可变对象
    • StringBuilder可以预分配缓冲区
            StringBuilder sb = new StringBuilder(1024);
            for (int i=0;i<1000;i++){
                sb.append(String.valueOf(i));
            }
            String s = sb.toString();
    

    2.StringBuilder可以进行链式操作

            String name = "Green";
            StringBuilder sb = new StringBuilder(1024);
            String s = sb.append("Mr ").append(name)
                    .append("!").insert(0,"Hello,")
                    .toString();
            System.out.println(s);
    
    不需要特别改写字符串 + 操作 编译器在内部自动把多个连续的 + 操作优化为StringBuilder操作

    3.StringBuffer:

    • StringBuilder和StringBuffer接口完全相同
    • StringBuffer是StringBuilder的线程安全版本
    • 跨线程做字符串很少见,因此没有必要使用StringBuffer

    4.总结

    • StringBuilder是可变对象,用来高效拼接字符串
    • StringBuilder可以支持链式操作
    • 实现链式操作的关键是返回实例本身
    • StringBuffer是StringBuilder的线程安全版本,很少使用
  • 相关阅读:
    数据科学家成长指南(下)
    数据科学家成长指南(中)
    数据科学家成长指南(上)
    数据分析的职业规划
    2018的内容写作方向
    乱码 设置编码
    CI 如何获取get请求过来的数据
    ci 打印出常用的变量
    CI $_GET
    获取checkbox 组成字符串
  • 原文地址:https://www.cnblogs.com/csj2018/p/10294157.html
Copyright © 2011-2022 走看看