1.字符串变量、StringBuffer、StringBulid的区别:
        
   字符串是一个常量,不能被修改
   字符串一旦被修改,那么会再创建一个对象,浪费空间
        
   而StringBuffer字符缓冲类是一个容器,它对它进行增删改操作,非常方便
        
   StringBuilder类提供一个与 StringBuffer兼容的 API,但不保证同步
        
   所以字符串频繁修改时我们推荐使用字符串缓冲类
        
2.StringBuilder与StringBuffer的相同点和不同点
   1)相同点:
       a.具有相同的方法
       b.都是字符串容器增删改操作,非常方便
        
   2)不同点:
       a.StringBuilder用在多线程时不安全,但比StringBuffer的运行效率高
       b.StringBuffer同在多线程时安全,但是比StringBuilder的运行效率低
       c.StringBuffer是JDK1.0发行的,StringBuilder是JDK1.5发行的
        
       推荐使用StringBuilder,因为在我们实际开发中同时对一个字符串处理的情况很少
       如果真的发生多线程问题时还是推荐使用StringBuffer

   总结:

        如果文本(字符串)不会改变就用String类,因为String对象是不可变的。
        如果文本(字符串)可以改变并且在单线程中访问,使用StringBuilder。
        如果文本(字符串)可以改变并且在多线程中访问,使用StringBuffer。
        
        
3.StringBuilder
       查看源代码,我们可以发现此类是用字符数组来储存字符的,默认的空间是16个字符
       注意:它可以储存任意类型的数据,因为它有可以添加任何类型数据的append方法重载
        
       此类的构造函数:
            StringBuilder()    构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。
            
                注意:如果我们使用append方法添加了大于16个字符的数据,那么容器的大小会增长一倍(其实是一倍加2),
                    但是如果没有添加大于16个字符的数据,容器的大小还是16,而并不是添加字符的长度
                       
            StringBuilder(CharSequence seq)     构造一个字符串生成器,包含与指定的 CharSequence 相同的字符。(CharSequence?)
            
            StringBuilder(int capacity)       构造一个其中不带字符的字符串生成器,初始容量由 capacity 参数指定。
                
                注意:如果我们在创建容器时给它指定容器的大小,再使用append方法添加数据时,
                    如果超过了我们指定容器大小,那么容器大小会增长一倍(其实是一倍加2)
                       
            StringBuilder(String str)         构造一个字符串生成器,并初始化为指定的字符串内容。
                
                注意:如果我们在创建对象的时候,初始化字符串内容那么容器的大小为  字符串的长度加上16
        
            
4.StringBuilder的常用函数列表
        
        添加:
            append(boolean b)          可以添加任何类型的数据到容器中
            insert(int offset, double d)    指定插入的索引值,并插入对应的数据(也可以添加任何类型数据)
            
        删除:
            
            delete(int start , int end )     删除指定开始和结束索引的数据(包头不包尾)
            deleteCharAt(int index)        根据指定的索引删除一个字符
            
        修改:
        
            replace(int start , int end, String str)    修改指定开始和结束位置的数据
            reverse()                    翻转容器的内容,例如:abc-->cba
            setCharAt(int start , char ch)         把指定索引值的字符替换指定的字符
            ensureCapacity(int minimumCapacity)       修改容器的大小
            
        查询:
        
            substring(int start , int end)       截取指定位置的字符
            indexOf(String str, int fromIndex)     根据指定的位置向后查找第一次出现指定字符的索引值
            lastIndexOf(String str, int fromIndex)   根据指定的位置向后查找最后一次出现指定字符的索引值
            capacity()                   查询容器的大小
            length()                  查询内容的长度
            CharAt(int index)              查询指定索引位置的一个字符
            toString()                 把容器内容转换成字符串输出

29. StringBuilder的更多相关文章

  1. [3] 微信公众号开发 - 结合UEditor实现图文消息群发功能

    0.写在前面的话 如何实现微信平台后台管理中的,图文消息发送功能? 大概的过程如下: 通过类似表单的形式,将文章各部分内容提交到后台,封装成一个实体类,并持久化到数据库中 需要推送的时候,将不同的文章 ...

  2. 微信公众号开发 [03] 结合UEditor实现图文消息群发功能

    0.写在前面的话 如何实现微信平台后台管理中的,图文消息发送功能? 大概的过程如下: 通过类似表单的形式,将文章各部分内容提交到后台,封装成一个实体类,并持久化到数据库中 需要推送的时候,将不同的文章 ...

  3. Spring拦截器从Request中获取Json格式的数据

    7 package com.newpp.core.interceptor; 8 9 import java.io.BufferedReader; 10 import java.io.ByteArray ...

  4. Spring Boot实战之Redis缓存登录验证码

    1.工具类 1 import lombok.experimental.UtilityClass; 2 3 import java.awt.*; 4 import java.awt.image.Buff ...

  5. Java 读取文件中的每一行,并为每一行插入特定的字符串

    工具 1:Eclipse Java EE IDE for Web Developers. Version: Photon Release (4.8.0). Build id: 20180619-120 ...

  6. RestPack Java实现Html转PDF文件

    最近公司需要将前端一个图表统计导出为pdf.前端导出显示的pdf还是可以的,但是将会导致页面不可用与卡死状态.所以由后端寻找解决方案. 以下为解决方案调研 https://www.cnblogs.co ...

  7. 关于String中+与StringBuilder的问题

      字符串连接可以通过两种方法实现,其中一种是在Java中提供的一个StringBuilder类(这个类只在J2SE5及以上版本提供,以前的版本使用StringBuffer类). 字符串是Java程序 ...

  8. 探秘Java中的String、StringBuilder以及StringBuffer

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...

  9. C#基础知识系列三(类和结构体、String和StringBuilder、equals和==)

    前言 这一节主要来了解一下类和结构体之间的异同点.以及针对String和StringBuilder的用法.equals和==,其实可以看出很多地方都用到了上一节的值类型和引用类型.堆栈和装箱拆箱操作吧 ...

随机推荐

  1. 案例- CSS 三角加强

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 微信小程序のwxss选择器

    一.什么是选择器 选择器就是选择标签所用样式的模式,即:以什么方式设置样式. 二.微信小程序的样式选择器 .calss就是选择器的一种 三.选择器的优先级 element表示样式元素:.element ...

  3. Rikka with Competition

    Rikka with Competition 给出一个大小为n的集合\(\{a_i\}\),每次从集合中随机挑出一对数\(a_i,a_j\),如果\(|a_i-a_j|>K\),那么从集合中删掉 ...

  4. 自定义solr域中的配置

    <!-- IKAnalyzer--> <fieldType name="text_ik" class="solr.TextField"> ...

  5. CSS3 @media 查询(制作响应式布局)

    这里简单说明一下@media 查询. 详细说明文档:http://www.runoob.com/cssref/css3-pr-mediaquery.html 使用 @media 查询,你可以针对不同的 ...

  6. spring boot基于DRUID数据源密码加密及数据源监控实现

    前言 随着需求和技术的日益革新,spring boot框架是越来越流行,她也越来越多地出现在我们的项目中,当然最主要的原因还是因为spring boot构建项目实在是太爽了,构建方便,开发简单,而且效 ...

  7. Python 生成json文件

    1.数据准备 数据下载 2.python代码 import datetime import os import mssqlhelper ms = mssqlhelper.MSSQL(host=&quo ...

  8. C++——函数及调用

    1.函数调用:实参初始化形参:控制权交给被调函数 2.函数返回(return语句):返回return中的值:控制权交回主函数 3.参数传递   传值 传引用 传指针 初始值 不变,拷贝给形参 可变,形 ...

  9. 4. Jmeter主界面的介绍

    上篇文章我们已经介绍过如何安装Jmeter.那么在本篇文章我们将要介绍Jmeter主界面有哪些功能.我们双击jmeter.bat,如下图所示(注意我这是jmeter5.0版本): 我们将Jmter主界 ...

  10. vue-lic脚手架中引入font-awesome

    1.安装font-awesome npm i font-awesome --production 2.在main.js中引用 import 'font-awesome/css/font-awesome ...