本系列博客汇总在这里:Java系列_汇总

目录

  • 一、StringBuffer 概述
  • 二、StringBuffer 和 String 的区别
  • 三、StringBuffer 的 append 方法
  • 四、可变字符串的追加
  • 五、StringBuffer 类的部分方法
  • 六、可变字符串的修改
    • 1、插入
    • 2、删除
    • 3、替换
    • 4、字符串的反转
    • 5、某个字符串倒序索引
    • 6、以上 3、4、5 示例

一、StringBuffer 概述

StringBuffer:字符串缓冲区。

二、StringBuffer 和 String 的区别

  1. String一旦被创建后,值不能改变,如果参与了操作,引用发生了变化,不是在原有的字符串上操作,而是产生了一个字符串。但是 StringBuffer 一旦发生改变,就是在原有的基础上改变的。
  2. 示例
    String

    String s = “hello”;
    s += “world”;
    System.out.println(s);//helloworld
    

    StringBuffer

    StringBuffer b = “hello”;
    b +=”world”;//使用hello的空间追加world,不是创建一个字符串。
    System.out.println(s);//helloworld
    
  3. 关于线程:



    StringBuffer是线程安全的,效率稍低。

三、StringBuffer 的 append 方法

  1. append 方法
  2. 示例
    package cn.tx;public class Demo
    {public static void main(String[] args){/*** append(boolean b) 描述:将 boolean参数的字符串表示附加到序列中。*/// 创建可变字符串,因为StringBuffer类里有StringBuffer()构造器,所以可以直接newStringBuffer sb = new StringBuffer();// 把可变字符串做追加字符trueStringBuffer sb1 = sb.append(true);// System.out.println(sb1);// 判断StringBuffer追加后的字符串的地址是否相等System.out.println(sb == sb1);/*** 对比String*/String str = "abc";// 字符串加上任何类型返回的都是字符串,加上字符trueString str1 = str + true;// System.out.println(str1);// 判断String追加后的字符串的地址是否相等System.out.println(str == str1);/*** 其余append()不再演示,详见API*/}
    }
    

四、可变字符串的追加

  1. StringBuffer 的构造器

  2. 示例

    package cn.tx;public class Demo
    {public static void main(String[] args){// 构造器一StringBuffer sb = new StringBuffer();/*** length() 描述:返回长度(字符数)。*/System.out.println("可变字符串的长度:" + sb.length());/*** capacity() 描述:返回当前容量。*/System.out.println("可变字符串的容量:" + sb.capacity());/*** 追加后*/// 追加后的长度及容量变化,容量默认是16(可指定),未满16,容量不会发生变化sb.append("liuchengjuan^_^kangyanfeng");System.out.println("可变字符串的长度为:" + sb.length() + "容量为:" + sb.capacity());/*** 指定容量的创建*/// 创建一个10个容量的字符串(构造器二)StringBuffer sb1 = new StringBuffer(10);sb1.append("liuchengjuan^_^kangyanfeng");System.out.println("可变字符串的长度为:" + sb1.length() + "容量为:" + sb1.capacity());/*** 带参创建*/// 创建一个带有字符串参数的可变字符串(构造器三)StringBuffer sb2 = new StringBuffer("liuchengjuan^_^kangyanfeng");System.out.println("可变字符串的长度为:" + sb2.length() + "容量为:" + sb2.capacity());}
    }
    

五、StringBuffer 类的部分方法

  1. 更多参见 API


  2. 示例
    package cn.tx;public class Demo
    {public static void main(String[] args){// 创建可变字符串,开辟一个默认是16 个字符的空间StringBuffer sb = new StringBuffer();sb.append(true).append('q')// 字节.append(new char[] { 'l', 'c', 'j' })// 数组.append("kang")// 字符串.append(100d)// double.append(14.5f)// float.append(13);// intSystem.out.println(sb);// 可变字符串对象的追加Person p = new Person();p.setIdcard("520");p.setName("刘成娟");p.setAge("18");p.setGender("1");// 追加了一个Person类的对象,打印拼接的应该是Person类toString的值sb.append(p);System.out.println(sb);StringBuffer sb1 = new StringBuffer("liuchengjuan");// 可变字符串1追加可变字符串2sb.append(sb1);System.out.println(sb);}
    }
    
    package cn.tx;public class Person
    {private String idcard;private String name;private String age;private String gender;public String getIdcard(){return idcard;}public void setIdcard(String idcard){this.idcard = idcard;}public String getName(){return name;}public void setName(String name){this.name = name;}public String getAge(){return age;}public void setAge(String age){this.age = age;}public String getGender(){return gender;}public void setGender(String gender){this.gender = gender;}@Overridepublic String toString(){return "Person [idcard=" + idcard + ", name=" + name + ", age=" + age + ", gender=" + gender + "]";}
    }
    

六、可变字符串的修改

StringBuffer 字符串处理。

1、插入

  • 示例

    package cn.tx;public class Demo
    {public static void main(String[] args){StringBuffer sb = new StringBuffer("liuchengjuan");// sb.insert(2, true);/*** insert(int offset, String str) 描述: 将字符串插入到此字符序列中。*/// 在指定的索引位置插入字符串,注意不要出现字符串索引越界的问题sb.insert(2, "kang");System.out.println(sb);/*** insert(int offset, char[] str) miaoshu :在此序列中插入 char数组参数的字符串表示形式。*/// 插入数组sb.insert(3, new char[] { 'k', 'y', 'f' });System.out.println(sb);/*** insert(int index, char[] str, int offset, int len) 描述:在此序列中插入* str数组参数的子阵列的字符串表示形式。*/// 第一个参数是要插入的索引位置,第二个参数是要插入的字符数组,第三个参数是数组的起始索引,第四个参数是要插入的长度// 在字符串索引3的位置处插入数组cs索引从1开始往后2长度的字符串char[] cs = { 'j', 'u', 'a', 'n' };sb.insert(3, cs, 1, 2);System.out.println(sb);/*** 其余insert不再演示,详见API*/}
    }
    

2、删除

  • 示例

    package cn.tx;public class Demo
    {public static void main(String[] args){StringBuffer sb = new StringBuffer("juan");/*** delete(int start, int end) 描述: 删除此序列的子字符串中的字符。*/// 第一个是删除的开始索引,第二个是结束索引(删除包含开始索引,不包含结束索引)// 有点数组越界的味道,但是不是数组越界,此处没有这个概念sb.delete(2, 4);System.out.println(sb);/*** deleteCharAt(int index) 描述:删除 char在这个序列中的指定位置。*/// 删除指定索引位置的字符(此处有越界的概念 )sb.deleteCharAt(1);System.out.println(sb);}
    }
    

3、替换

4、字符串的反转

5、某个字符串倒序索引

6、以上 3、4、5 示例

  • 示例

    package cn.tx;public class Demo
    {public static void main(String[] args){StringBuffer sb = new StringBuffer("juan");/*** replace(int start, int end, String str) 描述:用指定的String中的字符替换此序列的子字符串中的 String。*/// 第一个参数是替换的开始索引,第二个参数是替换的结束索引,第三个参数是替换的字符串sb.replace(1, 3, "kang");System.out.println(sb);/*** reverse() 描述:导致该字符序列被序列的相反代替。*/// 字符串反转sb.reverse();System.out.println(sb);/*** lastIndexOf(String str) 描述:返回指定子字符串最右边出现的字符串内的索引。*/// 获得倒数第一次出现的字符串索引int lastIndex = sb.lastIndexOf("n");System.out.println(lastIndex);/*** lastIndexOf(String str, int fromIndex) 描述:返回指定子字符串最后一次出现的字符串中的索引。*/// 获得从指定的索引开始向前数,找到倒数第一次出现的字符串出现的索引int lastIndex1 = sb.lastIndexOf("n", 5);System.out.println(lastIndex1);}
    }
    

如有错误,欢迎指正!

Java系列(34)——可变字符串相关推荐

  1. Java 1.1.3 修改字符串、不可变字符串

    修改字符串 String类没有提供用于修改字符串的方法.如果希望将 greeting 的内容修改为" Help!", 不能直接地将 greeting的最后两个位置的字符修改为 ' ...

  2. Java系列之:生成Json字符串

    Java系列之:生成Json字符串 一.拼接Json字符串 二.使用JSONObject()生成字符串 一.拼接Json字符串 import com.alibaba.fastjson.JSONObje ...

  3. Java系列之:ObjectMapper实现对象转化为Json、集合转化为Json、Json转化为对象、Json转化为JsonNode、JsonNode转化为Json字符串

    Java系列之:ObjectMapper实现对象转化为Json.集合转化为Json.Json转化为对象.Json转化为JsonNode.JsonNode转化为Json字符串 一.创建类Dataset ...

  4. java idwork长度_java 字符串id

    Java FutureTask import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.c ...

  5. 【java学习】String字符串

    1,概念 1)String 不可变 不可变类:final,不可被继承. public final class String implements java.io.Serializable, Compa ...

  6. 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token...

    为什么你学不会递归?告别递归,谈谈我的一些经验 可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! 可 ...

  7. Java系列一些小计

    Java基础视频 张孝祥JAVA视频教程完整版RMVB东西网 历经5年锤炼史上最适合初学者入门的Java基础视频传智播客 张孝祥2010年贺岁视频Java高新技术传智播客 Java多线程与并发库高级应 ...

  8. 【原】Java学习笔记022 - 字符串

    1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // ...

  9. c语言实现将字符串首尾*删除,java 编写函数将字符串的首尾空格删除。

    String 类有个方法去除字符串首位空格: str.trim(); 查看源代码: public String trim() { int len = value.length; int st = ; ...

最新文章

  1. 清晰易懂的Focal Loss原理解释
  2. 独家 | 指南:不平衡分类的成本敏感决策树(附代码链接)
  3. hdu 1003 Max Sum 解题报告
  4. Oracle数据库之PL/SQL
  5. 如何解决java乱码_java如何解决乱码
  6. Netty事件传播机制
  7. 在idea中为类和方法自动生成注释
  8. 鸟哥:程序员应该不断提升自身的不可替代性
  9. 余姚中考能用计算机吗,2018年余姚中考政策有大变化,2020年取消奖励加分项目...
  10. leetcode题解167-两数之和 II - 输入有序数组
  11. Oracle笔记(一) Oracle简介及安装
  12. css取消聚焦边框[Chrome,Safari]
  13. mysql 存储session
  14. android开机动画多长时间_Android开机动画及黑屏
  15. 进销存excel_excel进销存仓库表格同步手机操作
  16. exePath must be specified when not running inside a stand alone exe
  17. 解决undefined reference to `WinMain'
  18. Windows搭建SFTP文件服务器
  19. c++11:计算时间差(毫秒)
  20. 借贷系统后台操作说明

热门文章

  1. MySQL数据库——视图
  2. 编程语言种类这么多,学过5种以上就是大神!
  3. C语言函数调用栈(一)
  4. unzip解压带密码的压缩包
  5. CentOS 7安装指南
  6. 处理服务器上的挖矿木马小记
  7. mac 苹果如何才能实现剪切文件
  8. 快速搭建基于GB/T28181-2016的完整音视频框架
  9. ffmpeg切割音频文件
  10. Python与Pycharm安装包