string和stringBuilder的区别】的更多相关文章

public static void main(String[] args) { String str = new String("hello...."); StringBuffer stringBuffer = new StringBuffer(str); StringBuilder stringBuilder = new StringBuilder(); stringBuffer.append("world").append("!!"); /…
这是一道很常见的面试题目,至少我遇到过String/StringBuffer/StringBuilder的区别:String是不可变的对象(final)类型,每一次对String对象的更改均是生成一个新的String对象,原有的对象不会改变,相比之下StringBuffer与StringBuilder均是可更改的对象,效率要大于String,两者之间的区别在于StringBuffer适用于多线程,是线程安全的,而StringBuiler是JDK5.0后出来的,专门针对单线程,效率上要高于Stri…
1.分析string与stringbuilder的区别,我们先来看下面一段代码 首先我们使用string进行字符串的拼接 class Program { static void Main(string[] args) { //StringBuilder sb = new StringBuilder(); string str = null; //创建一个计时器,计算程序运行的时间 Stopwatch sw = new Stopwatch(); //开始计时 sw.Start(); for (in…
String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结: 1.先来分析一下这三个类之间的关系 乍一看它们都是用于处理字符串的java类,而且长得也都差不多,相信肯定有人会以为StringBuffer和StringBuilder都是继承自String这个类,即认为String类是其他两个类的超类.这种想法似乎很合理,但其实是不对的,事实上StringBuffer和StringBuilder确实是继承自某个类,但是这个类并不是String…
Question 20171114 String&&StringBuffer&&StringBuilder的区别和联系 创建成功的String对象,其长度是固定的,内容不能被改变和编译.虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象.如果重复地对字符串进行修改,将极大的增加系统开销.而JavaSE 5.0新增了可变的字符序列StringBuilder类,大大提高了频繁增加字符串的效率.也许我们会问那Jav…
* String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等 * 但StringBuffer和StringBuilder有什么区别呢? StringBuffer是线程安全的,在多线程程序中是很方便使用的,但是程序的效率就会慢一点. StringBuilder不是线程安全的,在单线程中,比StringBuf…
String.StringBuffer.StringBuilder都是JAVA中常用的字符串操作类,对于他们的区别大家也都能耳熟能详,但底层到底是怎样实现的呢?今天就再深入分析下这三种字符串操作的区别.各自的原理及使用场景. 请尊重作者劳动成果,转载请标明原文链接: https://www.cnblogs.com/jpcflyer/p/9280501.html 一.String 先来看一下JDK中String中的部分源码: public final class String implements…
相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天我在这里重新把这个概念给大家复习一下,顺便牵出 J2SE 5.0 里面带来的一个新的字符操作的类—— StringBuilder (先别忙着扔我砖头,我还算清醒,我这里说的不是 C #, Java 也有 StringBuilder 类).那么这个 StringBuilder 和 StringBuffer 以及我们最早遇见的 String 类有那些区别呢?…
Android 中的 String, StringBuffer 和 StringBuilder 是移动手机开发中经常使用到的字符串类.做为基础知识是必须要理解的,这里做一些总结. A.区别 可以从以下两个方面来理解 1.不变和可变. String类:使用数组保存字符串,类中的定义如下: private final char value[]; 注意到,因为用了final修饰符,所以可以知道string对象是长度不可变的. StringBuilder和StringBuffer类:都是继承自Abstr…
首先是,String,StringBuffer的区别 两者的主要却别有两方面,第一是线程安全方面,第二是效率方面 线程安全方面: String  不是线程安全的,这意味着在不同线程共享一个String的时候,需要先进行同步,否则会出现不同线程获得的值不同的情况,即线程不安全 StringBuffer 是线程安全的,在不同线程中共享的时候会自动同步,不需要手动同步. 效率方面: String在每次更改的时候均是重新建立一个变量,再将更改后的值赋予其中,多次更改之后会触发JVM的GC机制,占用资源…
当我们在初学使用C#时,常常会不知道该用StringBuilder合适还是用String高效,下面是我在学习当中对StringBuilder和String的区别总结,分享给大家. String类有不可改变性.每次执行字符操作时,都会创建一个新的String对象. StringBuilder 类解决了对字符串进行重复修改的过程中创建大量对象的问题.初始化一个StringBuilder 之后,它会自动申请一个默认的StringBuilder 容量(默认值是16),这个容量是由Capacity来控制的…
主要的区别在于 stringbuilder相对于string,效率要高些,string会在每次改变的时候进行内存重新组合,而stringbuilder则不会从新组合,另外stringbuilder有append,insert,replace 等一些方法,用起来比较方便. String 对象是不可改变的.每次使用 System.String 类中的方法之一或进行运算时(如赋值.拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.而 StringBuilder 则不会.在…
在java中我们经常可以看到StringBuffer和String的用法,但是我自己在使用过程中,经常会将两者弄混淆,今天我们就来了解一下两者的区别: 我们首先来看一下我们的官方API中的简单介绍: A string buffer is like a String, but can be modified. At any point in time it contains some particular sequence of characters, but the length and con…
String:每次改变,String都会重新构造,内存指针都会改变 StringBuffer:主要用在全局变量中 StringBuilder:在线程内完成字符拼接,因为线程是不安全的,所以完成后可以丢掉. 基本使用原则:如果要操作少量的数据,用String :单线程操作大量数据,用StringBuilder :多线程操作大量数据,用StringBuffer…
String对象是不可变的而StringBuilder则不是这样,可以方便的Append进行扩展. 比如:string aa="123456",那么aa就会在内存中占用一块能放下这个字符串的位置,当你在扩展为aa+="7"; 也就是变成“1234567”的时候,String会重新像系统申请一块能放下"1234567"的内存空间,这使得String在操作字符时会频繁申请内存. 而StringBuilder则不会这样,他会自动向后扩展,不需要频繁申请…
Stringbuilder类是直接用于字符串操作的类,打个比方把(1)string aa="123456";(2)aa+="789"; (3)StringBuilder text=new StringBuilder("123456",12);(4)text.Append("789");如果你输出aa,和text 你会发现他们的输出内容是一样的.但是aa的操作过程实际上是:首先在内存中分配一个地址空间,空间大小是6.然后执行 a…
string的缺点是每次字符串变量的内容发生了改变时,都必须重新分配内存.你想想,如果创建一个迭代100000次的循环,每次迭代都将一个字符连接到字符串,这样内存中就会有100000个字符串,每个字符串仅仅与前一个字符串相伴只是有一个字符不同,性能影响是很大的.StringBuilder通过分配一个缓存,就是一个工作区来解决这些问题,在工作区中队字符串应用StringBuilder类的相关方法.包括添加,删除,移除,插入和替换字符等等.执行完之后,将调用ToString方法把工作区中的内容转换为…
前言 看了一篇文章,大概是讲面试中的java基础的,有如题这么个面试题.我又翻了一些文章看了下,然后去看源码.看一下源码大概能更加了解一些. String String类是final的,表示不可被继承,不可变的.注释上也有说明: 其中用一个char[]来保存String的值. private final char value[]; 一旦赋值,就不可改变.看一下,操作string的源码,例如 substring,replace,concat 等方法,最终结果都是返回 new String(...)…
解答:String的长度是不可变的: StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法:线程安全: StringBuilder是从 JDK 5 开始,为StringBuffer该类补充了一个单个线程使用的等价类:通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快.…
简单描述下 效率:StringBuilder>StringBuffer>String 使用场景: 如果要操作少量的数据用 = String 单线程操作字符串缓冲区 下操作大量数据 = StringBuilder 多线程操作字符串缓冲区 下操作大量数据 = StringBuffer…
曾经被问到过这个问题,回答得不是很好,在网上找了一下,园子里有大神很详细地讨论了二者的区别. http://www.cnblogs.com/yunfeng8967/articles/1093832.html 先记下,再丰富.…
目录: 1.String类的不可变性 2.用String的时候需要注意什么 3.String与StringBuilder的区别 4.StringBuilder和StringBuffer的区别 String类的不可变性: 这个不可变性需要看源码,String类中有几个成员变量: private final char[] value;//存放String的值 private final int offset; private final int count; 他们都是final类型的,当你创建一个S…
String,StringBuffer,StringBuilder 之间区别 在字符串处理中C#提供了String.StringBuffer.StringBuilder三个类.那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下: 1.  三者在执行速度方面的比较:StringBuilder >StringBuffer > String String一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储.而StringBuffer类使用append和ins…
继上篇JVM学习之后,后面将分三期深入介绍剩余JAVA基础面试题,每期3题. 题目一.final,finally,finalize有什么区别? /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://www.cnblogs.com/jpcflyer/p/10739217.html* / 大家一般都这么回答: final 可以用来修饰类.方法.变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可…
String Stringbuffer  StringBuilder的区别: 1.string是字符串常量,且长度是不可改变的,Stringbuffer.stringBuilder是字符串变量 2.Stringbuffer是线程安全的,StringBuilder是非线程安全,主要用在全局变量中. 3.String是改变赋值的地址,而不是改变String中的值: 如:String a = “a”;//假设它的地址是001:值a是放在常量池中的 String a = “b”;//重新对a赋值后a指向…
* StringBuilder:是一个可变的字符串.字符串缓冲区类.** String和StringBuilder的区别:* String的内容是固定的.(方法区的内容)* StringBuilder的内容是可变的.*--------------------------------------------- * 构造方法:* StringBuilder()** 成员方法:* public int capacity():返回当前容量* public int length():返回长度(字符数)**…
String,StringBufffer,StringBuilder的区别 1.可变不可变方面 String类中使用字符数组保存字符串  ,final 修饰当然是不可变的,用String来操作字符串的时候,一旦我们字符串的值改变,就会在内存创建多一个空间来保存新的字符串,即当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,一旦遇到复杂的操作,String非常低效 private final char value[]; StringBuilder与S…
String Stringbuffer  StringBuilder的区别: 1.string是字符串常量,且长度是不可改变的,Stringbuffer.stringBuilder是字符串变量 2.Stringbuffer是线程安全的,StringBuilder是非线程安全,主要用在全局变量中. 3.String是改变赋值的地址,而不是改变String中的值: 如:String a = "a";//假设它的地址是001:值a是放在常量池中的 String a = "b&quo…
一.String 1.创建String对象的方法: String s1="haha"; String s2=new String(); String s3=new String("haha"); 2.String常用方法:  char charAt(int index)           返回指定索引处的 char 值.  int codePointAt(int index)           返回指定索引处的字符(Unicode 代码点).  int code…
阅读目录 1.什么时候用String?什么时候用StringBuilder? 2.String与StringBuilder的区别 总结   1.什么时候用String?什么时候用StringBuilder? 字符串一旦创建就不可修改大小,每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用Sys…