Java基础——常用对象API(2):StringBuffer类
文章目录
- 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.构造方法
- public StringBuffer():无参构造方法
- public StringBuffer(int capacity):指定容量的字符串缓冲区对象
- public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
3.方法
3.1 查询容量和长度
- public int capacity():返回当前容量 (理论值)
- 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 添加
- public StringBuffer append(String str);
- 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 删除
- public StringBuffer deleteCharAt(int index)
- 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类型
- public String substring(int start)
- 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类相关推荐
- hashset java api_java常用对象API中集合框架之HashSet
之前在<java常用对象API之集合框架>这篇文章中已经将所有集合框架做了一个总体的大纲陈列,并阐述了所有Collection接口下的子接口和类的作用解释,那么接下来的文章智言还是想把里面 ...
- Java基础知识强化38:StringBuffer类之StringBuffer的添加功能
1. StringBuffer的添加功能: public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身. publ ...
- java 对象构造函数_20.Java基础_对象的构造函数
package pack1; public class Student { private String name; private int age; //构造方法 //如果没有任何构造函数,系统会自 ...
- java 调用弗雷_JAVA API(一)String类和StringBuffer类
1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号" ...
- Java基础 ----常用时间类
Java基础 ----常用时间类 java.util.Date java.util.Calendar java.text.SimpleDateFormat new Date().getTime() & ...
- java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...
- Java中常用的API
文章目录 前言 一.java.lang String StringBuilder Integer parseXXX Math Object System Throwable Thread Runnab ...
- Java基础语法(九)——String类
文章目录 Java基础语法(九)--String类 一.定义方式 二.内存 三.字符串比较相等 四.字符串常量池 (1) 直接赋值 (2)采用构造方法 (3)intern 的使用 五.理解字符串不可变 ...
- JAV API 之 --- StringBuffer类、Array类、基本类型包装类
JAVA API 之 - StringBuffer类.Array类.基本类型包装类 StringBuffer类: 概念引入: 前面我们对字符串进行操作,一旦定义字符串之后,其长度是不可变的,如果对字符 ...
- Java基础提升高级API
Java基础提升高级API 学习类容来自:https://www.bilibili.com/video/BV1pE41137JY?p=2 1.Object类 object类是所有类的父类 2.Obje ...
最新文章
- linux下后台执行shell脚本
- 移动端C#病毒“东山再起”,利用知名应用通信实现远控隐私窃取
- 编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
- 在Scrollview中使用AutoLayout
- 池化层在全连接层之间吗,了解最大池化层之后的全连接层的尺寸
- 工作161:eachart渲染步骤
- CentOS64位下python2.6升级到2.7的详细教程
- 业界资讯:adobe creative suite 5.5你准备好了吗?
- 【手册】jc-cookies 中文文档
- PowerDesigner执行sql脚本方式建立数据模型
- DS3231时钟模块使用,IIC协议实践。(基于STM32)
- 繁简体(GB-Big5)字符串互转的JAVA方式实现
- win10打开红警卡死的解决方法--win10专业版
- Hyper-v安装及使用详细教程
- 总结了一些微信小程序推广方法
- 如何快速查看进程/子线程堆栈
- 今日头条——青龙羊毛
- 【Java字符串分割[split()]和截取[substring()]】
- Win7 64位系统不能使用农业银行网银
- 沉睡者IT - 10个问题说清楚:什么是元宇宙?
热门文章
- 通信原理matlab版,通信原理matlab
- python反编译命令_Python 反编译模块dis
- 软考之初级程序员(包含1990-2018历年真题详解+课本教材+模拟试卷+视频教程)
- SketchUp草图大师制作分析图的详细流程介绍
- 安防与消防融合发展的现状与机遇分析
- flash as3+php上传源文件下载
- 5.css企业开发经验,习惯盒模型,层模型
- Mip-NeRF:抗混叠的多尺度神经辐射场ICCV2021
- element tree不刷新视图_架构蓝图软件架构 quot;4+1quot; 视图模型
- python图像处理笔记-八-针孔照相机模型与照相机标定