首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

String、StringBuilder和StringBuffer

首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String   String最慢的原因:   String为字符串常量,而StringBuilder...和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。...而StringBuilder和StringBuffer的对象是变量,对变量进行操作就是直接对该对象进行更改,而不进行创建和回收的操作,所以速度要比String快很多。   ...再来说线程安全 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer...总结一下   String:适用于少量的字符串操作的情况   StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况   StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

23110

String、StringBuilder和StringBuffer

这篇文章主要介绍另外两个常用的类 StringBuilder 和 StringBuffer 的特性。 我们知道 String 是不可变的 (Immutable),字符串的操作会产生新对象,消耗内存。...为此,JDK 提供了 StringBuffer 和 StringBuilder 两个类。...StringBuffer 和 StringBuilder 都实现了 AbstractStringBuilder 抽象类,拥有几乎一致对外提供的接口;它们底层在内存中的存储方式与 String 相同, 都是以一个有序的字符序列进行存储...其中,StringBuffer 的线程安全是通过在 synchronize 关键字实现,为此,StringBuffer 的性能远低于 StringBuilder。...最后简单总结下各自的应用场景: 1、在字符串内容不经常发生变化的业务场景优先使用 String 类。 2、在频繁进行字符串的操作,并且需要考虑线程安全的情况下,建议使用 StringBuffer

40620

【每日小知识】String StringBuffer 、 StringBuilder 、String

可变性 简单的来说:String 类中使用 final 关键字修饰字符数组来保存字符串,private final char value[],所以 String 对象是不可变的。...线程安全性 String 中的对象是不可变的,也就可以理解为常量,线程安全。...性能 每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象。...StringBuffer 每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。...对于三者使用的总结: 操作少量的数据: 适用String 单线程操作字符串缓冲区下操作大量数据: 适用StringBuilder 多线程操作字符串缓冲区下操作大量数据: 适用StringBuffer

58920

String Stringbuilder Stringbuffer异同

字符串在编程中使用的非常频繁,同时又是面试中的常见题型,那么我们的对字符串相关类String,StringBuilder,StringBuffer的理解真的正确吗?...目录 String概述 StringBuilder 和StringBuffer 异同 性能比较 结论 扩展(详细源码阅读及方法解析) String概述 ?...StringBuilder和StringBuffer 既然已经有了String这个功能完备的嘞,那么为什么还需要StringBuilder和StringBuffer呢?...异同 从上面的一些源码中可以简单分析出String,StringBuilder,StringBuffer的一些异同点,如下: String是常量,不可改变,StringBuffer、StringBuilder...StringBuffer进行了50000的字符串拼接操作(String使用+方法,其他两个类使用append方法),每次拼接的值为当前循环的数字。

46820

StringStringBuffer、StringBuilder的区别

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

20420

String、StringBuilder、StringBuffer 用法比较

String、StringBuilder、StringBuffer 三个类源自JDK的 java/lang/ 目录下: String 字符串常量 StringBuffer 字符串变量(线程安全...) StringBuilder 字符串变量(非线程安全,JDK 5.0(1.5.0) 后支持) String  简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String...所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,而特别是以下的字符串对象生成中, String 效率是远要比 StringBuffer 快的:  String S1 =...; String S4 = “ test”; String S1 = S2 +S3 + S4; 这时候 JVM 会规规矩矩的按照原来的方式去做 在大部分情况下: StringBuffer > String...、StringBufferString 的区别 Java 之 String 类型

58840

关于string,stringbuffer_toString

); //也可以使用指定的字符编码 System.out.println(str); //AB12 9、深入理解StringBuffer和StringBuilder StringBuffer、StringBuilder...和String类似,底层也是用一个数组来存储字符串的值,并且数组的默认长度为16,即一个空的StringBuffer对象数组长度为16。...StringBuffer和StringBuilder中常用的方法: StringBuffer append(xxx):拼接字符串 StringBuffer delete(int start,int end...):删除指定范围的内容,左开右闭 StringBuffer replace(int start, int end, String str):替换指定范围的内容 StringBuffer insert(int...相同点:底层都是通过char数组实现的 不同点: String对象一旦创建,其值是不能修改的,如果要修改,会重新开辟内存空间来存储修改之后的对象;而StringBuffer和StringBuilder

55530

StringStringBuffer的区别?

String: 1.String创建的对象是不可变的,一旦创建不可改变 2.对象值可以改变其实是创建了一个新的对象,然后把新的值保存进去(如图1) 3.String类被final修饰,不可以被继承...4.String创建的对象的值存在于常量池,不用的时候不会被销毁 5.String运行时间较长 6.String适用于比较短而小的字符串 图1 StringBuffer: 1.StringBuffer...创建的对象是可变的 2.它的改变不像String那样重新创建对象,而是通过构造方法(如图2) 3.StringBuffer创建的对象的值存在于栈区,不用的时候会被销毁 4.StringBuffer...运行时间较短 5.StringBuffer适用于比较长的字符串、比较多的字符串 图2 接下来用代码来测试StringStringBuffer运行时的区别 package com.feisi.test...运行的时间:"+(end2-start2)); } } 运行结果如图: 总结: 今天学习了StringStringBuffer的区别,也额外收获了一些其他的知识,比如: 1.字符串加数字打印出来还是字符串

29020

StringBuffer StringBulider String的区别

补充: (1) String的创建机理 由于String在Java世界中使用过于频繁,Java为了避免在一个系统中产生大量的String对象,引入了字符串常量池。...2 StringBuffer/StringBuilder StringBuffer和StringBuilder都实现了AbstractStringBuilder抽象类,拥有几乎一致对外提供的调用接口;其底层在内存中的存储方式与...String相同,都是以一个有序的字符序列(char类型的数组)进行存储,不同点是StringBuffer/StringBuilder对象的值是可以改变的,并且值改变以后,对象引用不会发生改变;两者对象在构造过程中...可参看Java标准类库的源代码,StringBuffer类中方法定义前面都会有synchronize关键字。为此,StringBuffer的性能要远低于StringBuilder。...StringBuffer StringBuffer 是一个munitable 类也就是说他是可变的,为什么说可变,StringBuffer 的append方法在拼接字符串的时候不会创建新的对象,而是在原有的对象上增加字符串

38520

StringStringBuffer、StringBuilder比较学习

2 String s2 = new String("Hello"); 3 4 String s3 = "Hello"; 5 String...其次,StringStringBuffer、StringBuilder三者中 ,就运行速度而言,StringBuilder最高,StringBuffer次之,最后是String。...造成这种情况的原因是String是由final修饰的字符串常量,而StringBuffer和StringBuilder是字符串变量,即字符串常量一旦创建之后就无法改变,(但实际应用中我们是经常在改变它的值...因为在StringBuffer中,有很多方法是被synchronized关键字修饰的(因此也就限制了它的性能),所以如果在多线程应用时,应尽量使用StringBuffer从而保证线程安全,避免一些不必要的错误...因为String的+操作实际是调用了StringBuffer的append方法进行,然后又通过StringBuffer的toString()操作重新赋值的。

35830

String、StringBuilder和StringBuffer的区别

String String是一个不可变类,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。 有关String更详细的介绍,请看这篇文章每天都在用String,你真的了解吗?...StringBuffer StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse...一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。...我们可以看一下StringBuffer中的方法,用了synchronized关键字修饰,所以是线程安全的 总结 1、速度方面 StringBuilder > StringBuffer > String...2、线程安全 StringBuilder(非线程安全),StringBuffer(线程安全的) 3、使用场景 String:适用于少量的字符串操作。

24320
领券