java常用类, StringBuffer 和StringBuilder常用方法的详解

华南理工大学电子与信息学院23年预推免复试面试经验贴 阅读详情

StringBuffer类与StringBuilder类

  • java.lang.StringBuffer代表 可变的字符 序列,JDK1.0中声明,可以对字符 串内容进行增删,此时不会产生新的对象。
  • 很多方法与String相同。
  • 作为参数传递时,方法内部可以改变值。
    在这里插入图片描述
    在这里插入图片描述value 没有被声明成finall表示value可以不断的扩容
    count记录有效字符的个数。

StringBuffer 类不同于String ,其对象必须使用构造器生成。有 三 个 构造 器 :

  1. StringBuffer() :初始为 容量为16 的字符串缓冲区
  2. StringBuffer(int size) :构造 指定容量的字符串缓冲区
  3. StringBuffer(String str) :将 内容初始化为指定字符串内容
String s = new String("我喜欢学习");
StringBuffer buffer = new StringBuffer("我喜欢学习");
buffer.append("数学");
System.out.println(buffer);

在这里插入图片描述在这里插入图片描述String、StringBuffer、StringBuilder三者的异同?

  • String:不可变的字符序列;底层使用char[]存储

  • StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储

  • StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储

/*
源码分析:
    String str = new String();//char[] value = new char[0];
    String str1 = new String("abc");//char[] value = new char[]{'a','b','c'};

StringBuffer sb1 = new StringBuffer();//char[] value = new char[16];底层创建了一个长度是16的数组。
    System.out.println(sb1.length());//sb1.append('a');//value[0] = 'a';sb1.append('b');//value[1] = 'b';

StringBuffer sb2 = new StringBuffer("abc");//char[] value = new char["abc".length() + 16];

 //问题1. System.out.println(sb2.length());//3
//问题2. 扩容问题:如果要添加的数据底层数组盛不下了,那就需要扩容底层的数组。
             默认情况下,扩容为原来容量的2倍 + 2,同时将原有数组中的元素复制到新的数组中。

指导:开发中建议大家使用:StringBuffer(int capacity) 或 StringBuilder(int capacity)
*/


String Buffer的常用方法

StringBuffer的常用方法:
StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
StringBuffer delete(int start,int end):删除指定位置的内容
StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str
StringBuffer insert(int offset, xxx):在指定位置插入xxx
StringBuffer reverse() :把当前字符序列逆转
public int indexOf(String str)
public String substring(int start,int end):返回一个从start开始到end索引结束的左闭右开区间的子字符串
public int length()
public char charAt(int n )
public void setCharAt(int n ,char ch)
总结:
增:append(xxx)
删:delete(int start,int end)
改:setCharAt(int n ,char ch) / replace(int start, int end, String str)
查:charAt(int n )
插:insert(int offset, xxx)
长度:length();
*遍历:for() + charAt() / toString()
代码:

public void test() {
		StringBuffer sb1 = new StringBuffer("abcdefg");
		sb1.append(false);
		System.out.println(sb1);
		// sb1.delete(0, 2);
		// System.out.println(sb1);

		// sb1.deleteCharAt(0);
		// System.out.println(sb1);

		sb1.replace(1, 2, "xiaonaofu");
		System.out.println(sb1);
		sb1.insert(0, "hello");
		System.out.println(sb1);

		StringBuffer sb2 = sb1.reverse();
		System.out.println(sb2);
		char c = sb1.charAt(2);
		System.out.println(c);
		String sb3 = sb1.substring(0, 3);
		System.out.println(sb3);
		System.out.println(sb1.length());

	}

对比String、StringBuffer、StringBuilder三者的效率

让String、Stringbuffer、Stringbuilder做相同的操作记录他们消耗的时间

代码:

 @Test
    public void test3(){
        //初始设置
        long startTime = 0L;
        long endTime = 0L;
        String text = "";
        StringBuffer buffer = new StringBuffer("");
        StringBuilder builder = new StringBuilder("");
        //开始对比
        startTime = System.currentTimeMillis();
        for (int i = 0; i < 20000; i++) {
            buffer.append(String.valueOf(i));
        }
        endTime = System.currentTimeMillis();
        System.out.println("StringBuffer的执行时间:" + (endTime - startTime));

        startTime = System.currentTimeMillis();
        for (int i = 0; i < 20000; i++) {
            builder.append(String.valueOf(i));
        }
        endTime = System.currentTimeMillis();
        System.out.println("StringBuilder的执行时间:" + (endTime - startTime));

        startTime = System.currentTimeMillis();
        for (int i = 0; i < 20000; i++) {
            text = text + i;
        }
        endTime = System.currentTimeMillis();
        System.out.println("String的执行时间:" + (endTime - startTime));

    }

在这里插入图片描述结论:
从高到低排列:StringBuilder > StringBuffer > String

StringBuilder类

StringBuilder 和 和 StringBuffer 非常类似,均代表可变的字符序列 , 而且
提供相关功能的方法 也一样。

【WRF-Chem第二期】WRF-Chem有关 namelist 详解 阅读详情

相关推荐

ARM架构UOS实战:从源码编译Qt 5.15.2到定制Qt Creator的全流程解析

本文详细解析了在ARM架构统信UOS系统上,从源码编译Qt 5.15.2到定制Qt Creator开发环境的完整流程。内容涵盖环境准备、依赖部署、源码配置、编译优化、错误处理及IDE集成,旨在帮助开发者在国产化平台上构建自主可控的高性能Qt开发环境,解决特定ARM平台的兼容性与性能优化问题。

mango的博客 411

Java中String,StringBuffer, StringBuilder类的常用方法

一、String类的常用方法 1.获取: 1)获取字符串str长度 int i = str.length(); 2)根据位置(index)获取字符 char c = str.charAt(index); 3)获取字符在字符串中的位置 int i =str...

szw的博客 429

CTFshow-pwn入门-前置基础pwn32-pwn34

CTFshow-pwn入门-前置基础pwn32-pwn34

你们de4月天的博客 1133

StringBuffer与StringBuilder常用方法

(由于StringBuffer和StringBuilder在使用上几乎一样,所以只写一个)StringBuffer s = new StringBuffer();这样初始化出的StringBuffer对象是一个空的对象,StringBuffer sb1=new StringBuffer(512); 分配了长度512字节的字符缓冲区。 StringBuffer sb2=new StringBuffe

dashuai410329的博客 1487

用VASPKIT+Quantum Espresso高效绘制能带图:从K点路径生成到可视化全流程

本文详细介绍了如何整合VASPKIT与Quantum Espresso(QE)软件,构建一套高效的能带计算与可视化工作流。通过VASPKIT自动化生成高对称K点路径,结合QE完成自洽与非自洽计算,并利用gnuplot绘制发表级能带图。该流程极大提升了材料电子结构研究的效率与可重复性,是进行DFT能带计算的实用指南。

weixin_29294975的博客 164

使用Termux在Android设备上编译运行SpecCPU2006

SPEC2006搭配Termux,竟然还能这么玩?!

菜菜的菜园子 2961

Java常用API 之 java.lang.StringBuilder(附解析和示例)_12

2public final class StringBuilder extends Object implements Serializable, CharSequence    java.lang.StringBuilder是一个可变的字符序列。StringBuilder类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换...

coder__666的博客 1096

芯片硅前验证技术与驱动工程师实战指南

硅前验证是芯片开发流程中的关键环节,通过pre-silicon simulation等技术手段在流片前验证设计正确性。其核心技术包括软件仿真、FPGA原型验证和硬件仿真器解决方案,涉及Linux驱动开发、芯片架构理解和波形分析等核心技能。作为连接芯片设计与系统集成的桥梁,硅前验证能早期发现设计缺陷,节省数百万美元流片成本。以Cadence Palladium为代表的硬件仿真器,通过专用服务器系统实现比纯软件方案快100-1000倍的仿真速度,为驱动工程师提供完整的外设模型验证环境。掌握硅前验证技术可显著提升

weixin_42522857的博客 328

Java.lang.StringBuilder类

简介 java.lang.StringBuilder 类是可变的字符序列。这提供了一个与StringBuffer兼容的API,但不保证同步. 类的构造函数 S.N. 构造函数 & 描述 1 StringBuilder()  构造一个字符串生成器中没有字符,其初始容量为16个字符. 2 StringBuilder(CharSequence

燃烧那滴泪的专栏 1202

SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程-第一篇:ADT安装前置准备与环境校验教程

ABAP Development Tools(ADT)安装配置教程摘要 本文是ADT安装系列的第一篇,重点讲解环境准备与版本校验。ADT是基于Eclipse的现代ABAP开发工具,相比传统SAP GUI提供更智能的开发体验。安装前需确认: 推荐使用Eclipse 2026-03 + Java 21组合 操作系统需Windows 10+/macOS 14+ SAP GUI版本要求Windows≥8.00/macOS≥8.10 后端系统需NetWeaver 7.31 SP04+或S/4HANA 通过java -

baidu_35680696的博客 690

YOLOP v2!YOLOv7结合YOLOP的多任务版本 更好、更快、更强

YOLOP v2!YOLOv7结合YOLOP的多任务版本 更好、更快、更强

jacke121的专栏 2706

StringBuilder和StringBuffer的常用方法

StringBuilder和StringBuffer的常用方法

yanxiang3306 2356

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Java】StringBuffer与StringBuilder详解

本文深度解析Java中String、StringBuilder和StringBuffer的核心差异,涵盖不可变性、线程安全、构造方法及常用操作,结合性能测试数据对比三者效率,提供预分配容量、避免隐式转换等优化策略,助你提升代码性能并轻松应对高频面试题。

m0_73941339的博客 3975

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java——StringBuffer 和 StringBuilder

StringBuffer 是 Java 中一个用于可变字符串操作的类。与 String 类不同,String 对象是不可变的,一旦创建就无法更改,而 StringBuffer 则允许对字符串内容进行修改,能够提高字符串操作的效率,尤其是在需要频繁修改字符串内容的场合。StringBuffer 的所有的公共方法都是有 synchronized 关键字的,所以都是同步的,所以它在多线程中使用是线程安全的,但是由于这种对多线程情况的优化,导致它在单线程中使用性能较差。

Stewie Lee的博客 1789

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JAVA-StringBuilder和StringBuffer

/6原理是从后往前找原理是从指定位置从后向前找//0//-1找不到11.StringBuff insert(int offset, String str) 在offset位置插入:八种基类类型 & String类型 & Object类型数据//不会覆盖原有字符,原位置字符全部往后移//aaxxxbbccaabbaaxxx,证明可以当追加函数使用//报错//说明,要紧跟字符串末尾追加。

Lizhihao_的博客 1708

java中StringBuffer类和StringBuilder类常用的api

java中StringBuffer和StringBuilder的api

. 1282

Java常用类之 String、StringBuffer、StringBuilder

String实例化方式: 1. **方式一:通过`字面量定义`的方式** 2. **方式二:通过`new + 构造器`的方式** 面试题:String s = new String("abc"); 方式创建对象,在内存中创建了几个对象? 答:两个。一个是堆空间中new结构,一个是char[]对应的常量池中的数据:"abc"

Arbicoral的博客 1132

StringBuffer/StringBuilder(构造方法,常用方法和区别)

StringBuffer/StringBuilder 可变字符串 StringBuffer/StringBuilder 可变字符串,缓存字符串。 StringBuffer/StringBuilder的区别:StringBuffer线程安全,速度慢,StringBuilder线程不安全,但速度快 在不考虑线程安全的情况下尽量使用StringBulider。 一.StringBuilder的创建:使用构造方法 StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。

serendipity_xr的博客 2536

Java中stringBuilder和stringBuffer详解

stringBuilder是一个可变的字符串序列,默认容量是16位字符,可以自行指定大小,其对象是动态的,能自动扩展其容量。StringBuiler是被final所修饰的,不可被继承。在string中对于字符串拼接是通过加号来进行拼接,但是拼接后的对象是新创建的,而且旧的对象也没有被销毁,会占用内存造成浪费。而StringBuilder解决了这个问题。

hxl03100721的博客 999

【Java】—— 常用类和基础API:String、StringBuffer、StringBuilder

因为字符串对象设计为不可变,那么所以字符串有常量池来保存很多常量对象。JDK6中,字符串常量池在方法区。JDK7开始,就移到堆空间,直到目前JDK17版本。

weixin_63106307的博客 1016

Java内部类和常用类

字符串是常量,创建之后不消失字符串字面量存储在字符串池中,可以共享//"hello" 存储在常量池中//假如hashcode是x//"zhangsan"赋值给name 给字符串赋值时,并没有在原字符串上修改数据,而是重新开辟一块空间//hashcode是y “zhangsan”字符串常量可以共享//hashcode是y。

Naclarb优快云的博客 1279

java常用类: String,StringBuffer和StringBuilder的底层区别

java常用类: String ,StringBuilder和StringBuffer的底层区别

imbzz的博客 1087

JAVA常用类——StringBuffer和StringBuilder概述

JAVA常用类——StringBuffer和StringBuilder概述 String StringBuffer StringBuilder的异同: String 不可变的字符序列 底层使用char[]存储 StringBuffer 可变的字符序列 让线程安全,但效率低 底层使用char[]存储 StringBuilder 可变的字符序列 让线程不安全,但效率高 底层使用char[]存 效率对比 StringBuil

万里顾一程的博客 337

Java常用类之String、StringBuffer、StringBuilder

Java常用类之String、StringBuffer、StringBuilder

weixin_48457745的博客 589

Java中StringBuilder与StringBuffer的常用方法

在Java中,`StringBuilder`和`StringBuffer`是用于构建和操作字符串的类,它们都是可变的字符串序列。`StringBuilder`是非线程安全的,而`StringBuffer`是线程安全的,但性能上`StringBuilder`通常更快。由于`StringBuilder`和`StringBuffer`的API非常相似,本文将以`StringBuilder`为例进行介绍,并简要说明`StringBuffer`的线程安全性。

qq_36720723的博客 782

String,StringBuffer, StringBuilder类的常用方法

一、String类的常用方法1.获取: 1)获取字符串str长度 int i = str.length(); 2)根据位置(index)获取字符 char c = str.charAt(index); 3)获取字符在字符串中的位置 int i

zhao_yu_lei的博客 1万+
上一篇: java常用类 (一) String常用类及其常用方法总结
下一篇: JDK8之前的日期和日期API的测试、JDK8中新的日期和日期的API
·小脑斧·
博客等级 码龄7年 10粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值