风在路上 风在路上
首页
导航站
  • Java-Se

    • Java基础
  • Java-Se进阶-多线程

    • 多线程
  • Java-Se进阶-java8新特性

    • java8新特性
  • Java-ee

    • JavaWeb
  • Java虚拟机

    • JVM
  • golang基础

    • golang基础
  • golang框架

    • gin
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • Redis
    • ElasticSearch
    • MongoDB
  • ORM

    • MyBatis
    • MyBatis-Plus
  • Spring

    • Spring
  • SpringMVC

    • SpringMVC1
    • SpringMVC2
  • SpringCloud

    • SpringCloud
  • 中间件

    • RabbitMQ
    • Dubbo
  • 秒杀项目
  • Git
  • Linux
  • Docker
  • JWT
  • 面试
  • 刷题
开发问题😈
设计模式
关于💕
归档🕛
GitHub (opens new window)

风

摸鱼
首页
导航站
  • Java-Se

    • Java基础
  • Java-Se进阶-多线程

    • 多线程
  • Java-Se进阶-java8新特性

    • java8新特性
  • Java-ee

    • JavaWeb
  • Java虚拟机

    • JVM
  • golang基础

    • golang基础
  • golang框架

    • gin
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • Redis
    • ElasticSearch
    • MongoDB
  • ORM

    • MyBatis
    • MyBatis-Plus
  • Spring

    • Spring
  • SpringMVC

    • SpringMVC1
    • SpringMVC2
  • SpringCloud

    • SpringCloud
  • 中间件

    • RabbitMQ
    • Dubbo
  • 秒杀项目
  • Git
  • Linux
  • Docker
  • JWT
  • 面试
  • 刷题
开发问题😈
设计模式
关于💕
归档🕛
GitHub (opens new window)
  • Java-基础

    • Java基础
    • Java基础-String
    • Java基础-StringBuffer、StringBuilder
      • StringBuffer、StringBuilder
        • String、 StringBuffer、 stringBuiLder三者的异同
        • StringBuilder源码分析
        • StringBuffer类的常用方法(StringBuilder类似)
        • 效率对比:String<StringBuffer<StringBuilder
    • Java基础-时间api
    • Java基础-Java比较器
    • Java基础-枚举类
    • Java基础-注解
    • Java基础-集合框架
    • Java基础-泛型
    • Java基础-IO流
    • Java基础-网络编程
    • Java基础-反射
    • Java基础-异常机制
    • Java基础-java8其它新特性
  • Java-多线程

  • Java8新特性

  • JavaWeb

  • JVM

  • Java
  • Java-基础
zdk
2022-01-06
目录

Java基础-StringBuffer、StringBuilder

Table of Contents generated with DocToc (opens new window)

  • StringBuffer、StringBuilder
    • String、 StringBuffer、 stringBuiLder三者的异同
    • StringBuilder源码分析
    • StringBuffer类的常用方法(StringBuilder类似)
    • 效率对比:String<StringBuffer<StringBuilder

# StringBuffer、StringBuilder

# String、 StringBuffer、 stringBuiLder三者的异同

  • String:不可变的字符序列;底层使用final char[]数组实现

  • stringBuffer:可变的字符序列;线程安全的;效率低;底层使用可变char[]数组实现

  • StringBuilder(jdk5.0新增):可变的字符序列;线程不安全;效率高底层使用可变char[]数组

# StringBuilder源码分析

String str1 = new String("abc"); //char[] value = new char[]{ 'a' , 'b', ' c' };
StringBuffer sb1 = new StringBuffer();//char[] value = new char[16];底层创建了一个长度system.out.printLn(sb1.Length());//
sb1.append( 'a' ); //value[e] = 'a';sb1.append( ' b' ); l /value[1] = "b ';
StringBuffer sb2 = new StringBuffer("abc"); //char[] value = new char["abc".Length()+16]
//问题1.System.out.printLn(sb2.Length());/1/3
//问题2.扩容问题:如果要添加的数据底层数组盛不下了,那就需要扩容底层的数组。
//默认情况下,扩容为原来容量的2倍+2,同时将原有数组中的元素复制到新的数组中。
//指导意义:开发中建议大家使用: StringBuffer(int capacity)或StringBuilder(int capacity)来避免频繁扩容
1
2
3
4
5
6
7
8

# StringBuffer类的常用方法(StringBuilder类似)

  • StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接

  • StringBuffer delete(int start,int end):删除指定位置的内容

  • StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str

  • StringBuffer insert(int offset,xxx):在指定位置插入xXX

  • StringBuffer reverse():把当前字符序列逆转

    1.当append和insert时,如果原来value数组长度不够,可扩容。
    2.如上这些方法支持方法链操作。
    3.方法链的原理:
    @override
    public Stringeuilder append(string str) {
    	super.append(str);
    	return this;
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
  • public int indexOf(String str)

  • public String subString(int start,int end)

  • public int length()

  • public char charAt(int n )

  • public void setCharAt(int n ,char ch)

# 效率对比:String<StringBuffer<StringBuilder

在 GitHub 上编辑此页 (opens new window)
#String相关
最后更新: 2022/10/04, 16:10:00
Java基础-String
Java基础-时间api

← Java基础-String Java基础-时间api→

Theme by Vdoing | Copyright © 2022-2025 zdk | notes
湘ICP备2022001117号-1
川公网安备 51142102511562号
本网站由 提供CDN加速/云存储服务
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式