文章目录

  • 1.概述
  • 2.构造方法
  • 3.方法
    • 3.1 查询容量和长度
    • 3.2 添加
    • 3.3 删除
    • 3.4 替换
    • 3.5 反转
    • 3.6 截取
  • 4.StringBuffer和String的相互转换
    • 4.1 String——>StringBuffer
    • 4.2 StringBuffer——>String
  • 5. 练习
    • 5.1 数组拼接成指定字符串
    • 5.2 字符串反转
    • 5.3 判断字符串是否对称
  • 5. 其他
    • 5.1 String,StringBuffer和StringBuilder的区别
    • 5.2 StringBuffer和数组的区别
    • 5.3 形式参数

1.概述

每次对字符串进行拼接操作,都会构造一个新的String对象,既耗时又浪费空间,而StringBuffer可解决这问题。

线程安全的可变字符串。

StringBuffer和String的区别:前者长度和内容可变,后者不可变;如果使用前者做字符串的拼接,不会浪费太多资源。

2.构造方法

  1. public StringBuffer():无参构造方法
  2. public StringBuffer(int capacity):指定容量的字符串缓冲区对象
  3. public StringBuffer(String str):指定字符串内容的字符串缓冲区对象

3.方法

3.1 查询容量和长度

  1. public int capacity():返回当前容量 (理论值)
  2. public int length():返回字符串长度 (实际值)
StringBuffer sb0 = new StringBuffer();
System.out.println("sb0:"+sb0);//sb0:
System.out.println("sb0.capacity():"+sb0.capacity());//sb0.capacity():16
System.out.println("sb0.length():"+sb0.length());//sb0.length():0StringBuffer sb1 = new StringBuffer(50);
System.out.println("sb1:"+sb1);//sb1:
System.out.println("sb1.capacity():"+sb1.capacity());//sb.capacity():50
System.out.println("sb1.length():"+sb1.length());//sb.length():0StringBuffer sb2 = new StringBuffer("Hello");
System.out.println("sb2:"+sb2);//sb2:Hello
System.out.println("sb2.capacity():"+sb2.capacity());//sb2.capacity():21
System.out.println("sb2.length():"+sb2.length());//sb2.length():5

3.2 添加

  1. public StringBuffer append(String str);
  2. public StringBuffer insert(int offset,String str)
        StringBuffer sb = new StringBuffer();StringBuffer sb1 = sb.append("Hello");System.out.println(sb==sb1);//trueSystem.out.println(sb);//Hellosb.append(true);System.out.println(sb);//Hellotruesb.append(12);System.out.println(sb);//Hellotrue12sb.append(98.14);System.out.println(sb);//Hellotrue1298.14StringBuffer sb2 = new StringBuffer();sb2.append("World").append(43).append(false).append(12.56);System.out.println(sb2);//World43false12.56StringBuffer sb3 = new StringBuffer("Hello21true3.12");sb3.insert(5,"World");System.out.println(sb3);//HelloWorld21true3.12

3.3 删除

  1. public StringBuffer deleteCharAt(int index)
  2. public StringBuffer delete(int start,int end)
        StringBuffer sb = new StringBuffer();sb.append("Hello").append("Java").append("World");System.out.println(sb);// HelloJavaWorldsb.deleteCharAt(5);System.out.println(sb);//HelloavaWorldsb.delete(5,8);System.out.println(sb);//HelloWorldsb.delete(0,sb.length());System.out.println("sb:"+sb);//sb:

3.4 替换

public StringBuffer replace(int start,int end,String str)

        StringBuffer sb = new StringBuffer();sb.append("Hello World Java");sb.replace(6,11,"节日快乐");System.out.println(sb);//Hello 节日快乐 Java

3.5 反转

public StringBuffer reverse()

        StringBuffer sb = new StringBuffer();sb.append("avaJ通精");sb.reverse();System.out.println(sb);//精通Java

3.6 截取

返回值类型不再是StringBuffer类型,而是String类型

  1. public String substring(int start)
  2. public String substring(int start,int end)
        StringBuffer sb = new StringBuffer();sb.append("HelloWorldJava");String s1 = sb.substring(5);System.out.println(s1);//WorldJavaString s2 = sb.substring(5,10);System.out.println(s2);//World

4.StringBuffer和String的相互转换

4.1 String——>StringBuffer

1.通过构造方法

        String s = "Hello";StringBuffer sb = new StringBuffer(s);

2.通过append()方法

        String s = "Hello";StringBuffer sb2 = new StringBuffer();sb.append(s);

4.2 StringBuffer——>String

1.通过构造方法

        StringBuffer sb = new StringBuffer("Hello");String s = new String(sb);

2.通过toString()方法

        StringBuffer sb = new StringBuffer("Hello");String s = sb.toString();

5. 练习

5.1 数组拼接成指定字符串

public class Test1 {public static void main(String[] args) {int[] a = {4,5,9,6,4};System.out.println(arrayToString1(a));System.out.println(arrayToString2(a));}public static String arrayToString1(int[] a) {String s = "";s += "[";for(int i = 0; i < a.length; i++) {if(i == a.length-1) {s += a[i];}else {s += a[i];s += ", ";}}s += "]";return s;}public static String arrayToString2(int[] a) {StringBuffer sb = new StringBuffer();sb.append("[");for(int i = 0; i < a.length; i++) {if(i == a.length-1) {sb.append(a[i]);}else {sb.append(a[i]);sb.append(", ");}}sb.append("]");return sb.toString();}
}

5.2 字符串反转

import java.util.Scanner;public class Test2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();System.out.println(myReverse1(s));System.out.println(myReverse2(s));}public static String myReverse1(String s) {//用String做字符串的拼接String str = "";char[] ch = s.toCharArray();for(int i = ch.length-1; i >= 0; i--) {str += ch[i];}return str;}public static String myReverse2(String s) { //用StringBuffer的reverse()方法StringBuffer sb = new StringBuffer(s);sb.reverse();return sb.toString();}
}

5.3 判断字符串是否对称

import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();System.out.println(ifSymmetry(s));}public static boolean ifSymmetry(String s) {return new StringBuffer(s).reverse().toString().equals(s);}
}

5. 其他

5.1 String,StringBuffer和StringBuilder的区别

A:String的内容是不可变的,StringBuffer和StringBuilder的内容是可变的。
B:StringBuffer是同步的,数据安全,但效率低;StringBuilder不同步,数据不安全,但效率高。

5.2 StringBuffer和数组的区别

二者都可看成容器,用来装数据。
StringBuffer可以往里面添加各种类型的数据,但最终是字符串数据;
数组只能存放一种类型的数据。

5.3 形式参数

public class Test {public static void main(String[] args) {String s1 = "hello";String s2 = "world";System.out.println(s1+"——————"+s2);//hello——————worldchange(s1,s2);System.out.println(s1+"——————"+s2);//hello——————worldStringBuffer sb1 = new StringBuffer("hello");StringBuffer sb2 = new StringBuffer("world");System.out.println(sb1+"——————"+sb2);//hello——————worldchange(sb1,sb2);System.out.println(sb1+"——————"+sb2);//hello——————worldhello}public static void change(String s1,String s2) {String s = s1;s1 = s2;s2 = s;}public static void change(StringBuffer sb1,StringBuffer sb2) {sb2.append(sb1);sb1 = sb2;}
}

Java基础——常用对象API(2):StringBuffer类相关推荐

  1. hashset java api_java常用对象API中集合框架之HashSet

    之前在<java常用对象API之集合框架>这篇文章中已经将所有集合框架做了一个总体的大纲陈列,并阐述了所有Collection接口下的子接口和类的作用解释,那么接下来的文章智言还是想把里面 ...

  2. Java基础知识强化38:StringBuffer类之StringBuffer的添加功能

    1. StringBuffer的添加功能: public  StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身. publ ...

  3. java 对象构造函数_20.Java基础_对象的构造函数

    package pack1; public class Student { private String name; private int age; //构造方法 //如果没有任何构造函数,系统会自 ...

  4. java 调用弗雷_JAVA API(一)String类和StringBuffer类

    1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号" ...

  5. Java基础 ----常用时间类

    Java基础 ----常用时间类 java.util.Date java.util.Calendar java.text.SimpleDateFormat new Date().getTime() & ...

  6. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

  7. Java中常用的API

    文章目录 前言 一.java.lang String StringBuilder Integer parseXXX Math Object System Throwable Thread Runnab ...

  8. Java基础语法(九)——String类

    文章目录 Java基础语法(九)--String类 一.定义方式 二.内存 三.字符串比较相等 四.字符串常量池 (1) 直接赋值 (2)采用构造方法 (3)intern 的使用 五.理解字符串不可变 ...

  9. JAV API 之 --- StringBuffer类、Array类、基本类型包装类

    JAVA API 之 - StringBuffer类.Array类.基本类型包装类 StringBuffer类: 概念引入: 前面我们对字符串进行操作,一旦定义字符串之后,其长度是不可变的,如果对字符 ...

  10. Java基础提升高级API

    Java基础提升高级API 学习类容来自:https://www.bilibili.com/video/BV1pE41137JY?p=2 1.Object类 object类是所有类的父类 2.Obje ...

最新文章

  1. linux下后台执行shell脚本
  2. 移动端C#病毒“东山再起”,利用知名应用通信实现远控隐私窃取
  3. 编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
  4. 在Scrollview中使用AutoLayout
  5. 池化层在全连接层之间吗,了解最大池化层之后的全连接层的尺寸
  6. 工作161:eachart渲染步骤
  7. CentOS64位下python2.6升级到2.7的详细教程
  8. 业界资讯:adobe creative suite 5.5你准备好了吗?
  9. 【手册】jc-cookies 中文文档
  10. PowerDesigner执行sql脚本方式建立数据模型
  11. DS3231时钟模块使用,IIC协议实践。(基于STM32)
  12. 繁简体(GB-Big5)字符串互转的JAVA方式实现
  13. win10打开红警卡死的解决方法--win10专业版
  14. Hyper-v安装及使用详细教程
  15. 总结了一些微信小程序推广方法
  16. 如何快速查看进程/子线程堆栈
  17. 今日头条——青龙羊毛
  18. 【Java字符串分割[split()]和截取[substring()]】
  19. Win7 64位系统不能使用农业银行网银
  20. 沉睡者IT - 10个问题说清楚:什么是元宇宙?

热门文章

  1. 通信原理matlab版,通信原理matlab
  2. python反编译命令_Python 反编译模块dis
  3. 软考之初级程序员(包含1990-2018历年真题详解+课本教材+模拟试卷+视频教程)
  4. SketchUp草图大师制作分析图的详细流程介绍
  5. 安防与消防融合发展的现状与机遇分析
  6. flash as3+php上传源文件下载
  7. 5.css企业开发经验,习惯盒模型,层模型
  8. Mip-NeRF:抗混叠的多尺度神经辐射场ICCV2021
  9. element tree不刷新视图_架构蓝图软件架构 quot;4+1quot; 视图模型
  10. python图像处理笔记-八-针孔照相机模型与照相机标定