首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

String、StringBuilder、StringBuffer 用法比较

String、StringBuilder、StringBuffer 三个类源自JDK java/lang/ 目录下: String 字符串常量 StringBuffer 字符串变量(线程安全...String 对象字符串拼接其实是被 JVM 解释成了 StringBuffer 对象拼接,所以这些时候 String 对象速度并不会比 StringBuffer 对象慢,而特别是以下字符串对象生成中...Java.lang.StringBuffer线程安全可变字符序列。...StringBuffer主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型数据。...该类被设计用作 StringBuffer 一个简易替换,用在字符串缓冲区被单个线程使用时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

57740
您找到你想要的搜索结果了吗?
是的
没有找到

java中stringbuffer用法StringBuffer实现高效字符串拼接

构造函数:StringBuffer是java中一个可变字符序列,它可以被看作是一个字符串容器,可以在其中添加、删除、修改字符串。1....构造函数: StringBuffer():创建一个空字符串缓冲区,容量为16个字符 StringBuffer(int size):创建一个空字符串缓冲区,容量为size个字符 StringBuffer...常用方法: append():将指定字符串追加到此字符序列 insert():将指定字符串插入此字符序列指定位置 delete():删除此字符序列子字符序列 reverse():反转此字符序列 replace...():使用给定字符串替换此字符序列子字符序列 toString():返回此字符序列字符串表示形式代码示例:public class StringBufferDemo { public static...void main(String[] args) { // 创建一个空字符串缓冲区 StringBuffer sb = new StringBuffer();

22130

c语言buffer用法_c++ stringbuffer

大家好,又见面了,我是你们朋友全栈君。 ring buffer实质上是在一块连续内存上对数据进行写入和读取,只是在写入和读取时候有些不同。...每次读取时候都要从开辟空间地址加上一个读取偏移量读取,相对应,写入时候也要从开辟空间地址加上一个写入偏移量来写入。重点也就在读取和写入数据上面。下面从代码上面来说一下。...首先定义一个ring buffer结构体 typedef struct { uint8_t *buffer; //存放实际数据 int32_t read_offset;...//读取地址相对buffer偏移量 int32_t write_offset; //写入地址相对buffer偏移量 int32_t valid_size; //buffer有效.../** * buffer_to_write:需要写入数据地址 * size:需要写入数据大小 */ void ring_buffer_write(void *buffer_to_write

2.1K20

StringBuffer使用

概念:     StringBuffer可以理解为String增强版     对字符串频繁修改(如字符串连接)时,使用StringBuffer可以大大提高程序执行效率 **创建StringBuffer...String对象做频繁修改时候,那么使用String对象就会产生很多     垃圾对象,这个时间我们考虑,使用StringBuffer来提高我们执行效率,如果我们使用字     符串,没有频繁修改...,那我们用String对象是最简单StringBuffer也表示是字符串对象,     那么如何来使用StringBuffer来创建词词字符串对象呢,我们来看一下StringBuffer只能通过...    构造方法来创建StringBuffer对象,可以用无参,也可以用有参StringBuffer里边,对     字符串操作方法,在String类里边他们有很多方法都是相似的,我们重点介绍...()方法,所以我们要把String对象转化成StringBuffer     对象,然后我们通过for循环获取字符串长度-3,然后调用insert()方法,在索引为i位置     加入一个字符逗号

46920

string和stringbuffer区别面试题_stringbuffer转为string

大家好,又见面了,我是你们朋友全栈君。 String和StringBuffer区别 String: 是对象不是原始类型。 为不可变对象,一旦被创建,就不能修改它值。...StringBuffer: 是一个可变对象,当对它进行修改时候不会像String那样重新建立对象。...它只能通过构造函数来建立,StringBuffer subffer=new StringBuffer(); 对象被建立以后,在内存中就会分配内存空间,并初始保存一个null,通过它append方法向其赋值...subffer.append(“hello word”); 字符串连接操作中StringBuffer效率要明显比String高; String对象是不可变对象,每次操作String都会建立新对象来保存新值...StringBuffer对象实例化后,只对这一个对象操作。

23010

StringBuffer StringBulider String区别

2 StringBuffer/StringBuilder StringBuffer和StringBuilder都实现了AbstractStringBuilder抽象类,拥有几乎一致对外提供调用接口;其底层在内存中存储方式与...因此,对于较大对象扩容会涉及大量内存复制操作,如果能够预先评估大小,可提升性能。 唯一需要注意是:StringBuffer是线程安全,但是StringBuilder是线程不安全。...可参看Java标准类库源代码,StringBuffer类中方法定义前面都会有synchronize关键字。为此,StringBuffer性能要远低于StringBuilder。...StringBuffer StringBuffer 是一个munitable 类也就是说他是可变,为什么说可变,StringBuffer append方法在拼接字符串时候不会创建新对象,而是在原有的对象上增加字符串...hugeCapacity(minCapacity) : newCapacity; } StringBuilder 和Stringbuffer 用法是不相上下,只是StringBuilder

37620

String与StringBuffer区别?

4.String创建对象值存在于常量池,不用时候不会被销毁 5.String运行时间较长 6.String适用于比较短而小字符串 图1 StringBuffer: 1.StringBuffer...创建对象是可变 2.它改变不像String那样重新创建对象,而是通过构造方法(如图2) 3.StringBuffer创建对象值存在于栈区,不用时候会被销毁 4.StringBuffer...运行时间较短 5.StringBuffer适用于比较长字符串、比较多字符串 图2 接下来用代码来测试String和StringBuffer运行时区别 package com.feisi.test...)); //打印StringBuffer消耗时间 double start2 = System.currentTimeMillis(); StringBuffer str2 = new StringBuffer...运行时间:"+(end2-start2)); } } 运行结果如图: 总结: 今天学习了String与StringBuffer区别,也额外收获了一些其他知识,比如: 1.字符串加数字打印出来还是字符串

21520

String、StringBuilder、StringBuffer区别

String、StringBuilder、StringBuffer String Immutable类,被声明为final class,所有的属性也都是final,原生就是线程安全,特性如上述,...所以String操作效率往往对使用率有影响,针对常量池优化。...当同一个字符串反复出现时,这个技术可以大幅度节省内存空间 StringBuffer 实现自AbstractStringBuilder,内部定义了一个初始长度是16char数组字节缓存区,在缓存区使用...append或者add方法将字符串添加到原序列末尾或指定位置,长度是16+Str.length,完成后StringBuffer调用toString方法才会变成一个String,StringBuffer...(线程安全) StringBuilder 实现自AbstractStringBuilder,在能力上和StringBuffer没有本质区别,去掉线程安全部分,性能优于StringBuffer

32110

StringBuffer

) 任何一个字符串,都是String类匿名对象 字符串一旦声明则不可改变,可以改变只是String类对象引用 StringBuffer类 区别:StringBuffer类可以改变字符串中内容,而...String类则无法改变被初始化过字符串内容(改变只是String字符串引用位置) append()方法 public StringBuffer append() 改动字符串中内容(添加) public...StringBuffer buf = new StringBuffer(); // 调用append()方法,向StringBuffer实例化空间String添加内容 buf.append("...,上述代码则通过 append() 方法来后续添加字符,改变初始后字符串buf内容 String和StringBuffer比较 String类 StringBuffer类 java.lang.Object...StringBuffer中提供方法都是同步方法,属于安全线程操作,而StringBuilder类中方法都属于异步方法(非线程安全操作)

30720

String、StringBuffer、StringBuilder区别

String 字符串常量,字符串长度不可变,每次对String操作都会产生一个新对象。不仅效率低下,而且大量浪费有限内存空间。 StringBuffer 是线程安全字符串变量。...任何对它指向操作都不会产生新对象。如果要使结果变为String类型,可以调用StringbuffertoString方法。...每个Stringbuffer对象都有一定缓冲区容量,当字符串大小没有超过缓冲区容量时,不会分配新容量,当大小超过时,会自动增加容量。...StringBuilder是线程不安全字符串变量,Stringbuilder和 Stringbuffer类功能基本相似,主要区别在于,Stringbuffer是线程安全,Stringbuilder是线程不安全...速度一般从小到大为String 、StringBuffer、StringBuilder。 String:适合用于操作少量数据时 StringBuffer:适合用于多线程字符串缓冲区下操作大量数据。

19920

StringBuilder和StringBuffer区别

大家好,又见面了,我是你们朋友全栈君。 StringBuilder和StringBuffer区别在哪里?...当接触这个问题时候,我们可能第一反应就是,StringBuilder是线程不安全StringBuffer是线程安全 为什么StringBuilder是线程不安全,StringBuffer是线程安全...分析 在分析这个问题之前,我们要知道StringBuilder和StringBuffer内部实现其实跟String是一样,都是通过一个char类型数组进行存储字符串,不同是String类中char...数组是final修饰,是不可变,而StringBuilder和StringBufferchar数组没有被final修饰,是可变。...如果我们将测试代码StringBuilder对象换成StringBuffer对象会输出什么呢? 100000 当然是输出10000啦! 那么StringBuffer用什么手段保证线程安全

26910

StringBuilder与StringBuffer

private static void update() { stringBuilder.append("1"); } } //size:4999 main函数中输出结果不为预期...stringBuffer=new StringBuffer(); public static void main(String[] args) throws Exception{...StringBuffer每次输出结果与预期结果一致,因此它是线程安全StringBuffer使用synchronized保证线程安全 @Override public synchronized...StringBuffer在方法实现上使用了synchronized关键字对方法进行同步,因此是线程安全,而StringBuilder则没有进行特殊同步或并发处理。...通常情况下,字符串拼接出现在方法内(在方法中以局部变量方式使用,可以做到线程封闭),使用StringBuilder进行字符串拼接会大大提高性能,属于堆栈封闭,单个线程操作对象,因此不存在线程不安全问题

39000

String、StringBuilder和StringBuffer区别

StringBuffer StringBuffer对象则代表一个字符序列可变字符串,当一个StringBuffer被创建以后,通过StringBuffer提供append()、insert()、reverse...一旦通过StringBuffer生成了最终想要字符串,就可以调用它toString()方法将其转换为一个String对象。...不同是:StringBuffer是线程安全,而StringBuilder则没有实现线程安全功能,所以性能略高。...我们可以看一下StringBuffer方法,用了synchronized关键字修饰,所以是线程安全 总结 1、速度方面 StringBuilder > StringBuffer > String...StringBuilder和StringBuffer对象是变量,对变量操作是直接对该对象就行更改,因此不会进行反复创建和回收。所以在运行速度上比较快。

23320

+、StringBuffer、StringBuilder区别

零、故事 小王是一个一年经验新 Java 程序员,最近他负责模块出现了性能问题,每次执行时间总是在十多秒。...小王经过排查终于找出来原因了,是因为在字符串连接时候使用了传统字符串连接方式造成,但是具体解决方法小王还是不清楚。...于是小王找到了项目组资深程序员刘哥,刘哥看完代码告诉小王说:你可以使用 StringBuffer 或者 SrtingBuilder 进行字符串连接。...一、讲解 Java 中 + 、 StringBuffer 和 StringBuilder 在开发中我们经常用到,但是部分开发人员就像前面故事中所讲小王一样对这三种字符串连接方式有所疑惑,下面我就来一一讲解一下...StringBuffer StringBuffer 是 JDK 1.0 中引入一个线程安全字符串变量,在任意时间点上都包含特定字符序列,并且可以调用一些方法去该表序列长度和内容。

48520
领券