热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

API(3)StringBuffer类和StringBulider类

StringBuffer类 ● StringBuffer类概述 我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时&#xff
StringBuffer

● StringBuffer类概述

我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题线程安全的可变字符序列

● StringBufferString的区别?

构造方法

public StringBuffer()

public StringBuffer(String str)

添加功能
public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)
删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)
替换功能
public StringBuffer replace(int start,int end,String str)
反转功能
public StringBuffer reverse()
截取功能
public String substring(int start)
public String substring(int start,int end)
截取功能和前面几个功能的不同
返回值类型是String类型,本身没有发生改变

package com.ffyc.javaapi.stringdemo.buffer;public class StringBufferDemo {public static void main(String[] args) {/*线程安全, 底层可变字符串char[] value;AbstractStringBuilder(int capacity) {value = new char[capacity];}super(16); 默认长度super(str.length() + 16); 使用传入字符串创建对象,生成的底层数组为传入的字符串长度+16当向StringBuffer中添加内容时,是将内容添加到底层的数组中,数组没有被final修饰,当数组装满时,会创建一个新的数组,将新数组地址给底层数组,StringBuffer对象是不会改变的.*/ //new StringBuffer(30); 指定生成底层数组的长度//new StringBuffer();// 默认底层char数组长度是16/* StringBuffer stringBuffer = new StringBuffer("abcd");//20stringBuffer.append("efg111");stringBuffer.append("efg2222");stringBuffer.append("efg2222");//向末尾追加内容,当数组装满时创建新的底层数组System.out.println(stringBuffer);*/StringBuffer stringBuffer = new StringBuffer("abcdefg");//23//stringBuffer.insert(2,"xx");//向指定的位置插入字符串//stringBuffer.deleteCharAt(1);//删除指定位置的字符//stringBuffer.delete(0,3);//删除指定区间的内容 包含开始,不包含结束//stringBuffer.replace(0,3, "XXX");//替换//stringBuffer.reverse();//逆序字符串//String sub = stringBuffer.substring(2);//截取从指定位置开始到结束一个字符串副本返回//String sub = stringBuffer.substring(2,5);//截取从指定位置开始到指定位置结束一个字符串副本返回//System.out.println(sub);System.out.println(stringBuffer);String s1 = "abcd";System.out.println(s1.length());//4System.out.println(stringBuffer.length());//返回的是底层数组中实际转入的字符个数stringBuffer.append("efg111");}
}

● StringBuilder类功能和StringBuffer功能完全一致, StringBuffer是线程安全的


public class StringBuilderDemo {/*多线程不安全 可变字符串这两个类的区别@Overridepublic StringBuilder append(String str) {super.append(str);return this;}@Overridepublic synchronized StringBuffer append(String str) {toStringCache = null;super.append(str);return this;}String : 底层都是数组实现 final char[] 值不能改变, 改变后会创建一个新的对象StringBuffer : 线程安全的 可变字符串 char[]StringBuilder: 线程不安全 可变字符串*/public static void main(String[] args) {// new StringBuilder();// new StringBuilder("abcd");StringBuilder stringBuilder = new StringBuilder(30);stringBuilder.append("aaa");stringBuilder.insert(2,"aaaa");}
}

● String:是字符常量,适用于少量的字符串操作的情况
● StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
● StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况


推荐阅读
  • python-去除字符串中特定字符一、去掉字符串两端字符:strip(,rstrip(,lstrip(s.strip(#删除两边(头尾空字符,默认是空字符s. ... [详细]
  • 题目描述输入整型数组和排序标识,对其元素按照升序或降序进行排序(一组测试用例可能会有多组数据)本题有多组输入,请使用whil ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Birthdate ... [详细]
  • 题目描述:一个DNA序列由ACGT四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个 ... [详细]
  • 点此学习更多SQL相关函数与字符串处理函数mysql函数一、简明总结ASCII(char)        返回字符的ASCII码值BIT_LENGTH(str)      返回字 ... [详细]
  • 在Oracle中执行动态SQL的几种方法在一般的sql操作中,sql语句基本上都是固定的,如:SELECTt.empno,t.ename FROMscott.emptWHEREt. ... [详细]
  • 最近自己做一个工具最后涉及到一个存储成bmp位图的形式,由于这部分并不是整个project的重点我就从网上找了例子改了改,但是目前的问题是有很多时候都是存储的bmp全黑,我也并不知道是怎么回事。 ... [详细]
  • 找出字符串中重复字符
    2019独角兽企业重金招聘Python工程师标准packagejavaBasic;importjava.util.HashMap;importjava.util.Map; ... [详细]
  • 在这一期的SendMessage函数应用中,我将向大家介绍如何利用消息函数来扩展树型列表(TreeView)控件的功能相信对于树型列表控件大家十分的熟悉, ... [详细]
  • 1、创建高级对象使用构造函数来创建对象构造函数是一个函数,调用它来例示并初始化特殊类型的对象。可以使用new关键字来调用一个构造函数。下面给出了使用构造函数的新示例。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 求数组中字符串的最长公共前缀(Java)
    求数组中字符串的最长公共前缀(牛客网—牛客题霸算法篇—NC55)题目描述给你一个大小为n的字符串数组strs,其中包含n个字符串,编写一个函数来查找字符串数组中的最长公共前缀,返回 ... [详细]
author-avatar
廉杰登_393
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有