java复习(5)—String、StringBuilder和StringBuffer

原创 2016年08月30日 18:35:55

1.String类是不变字符串,StringBuffer类和StringBuilder类是可变字符串,这3种字符串都是16位的Unicode字符序列,并且这3个类都被声明为final类,因此不能被继承。

2.String str = new String("abc")创建实例的过程 

 首先在堆中(不是常量池)创建一个指定的对象"abc",并让str引用指向该对象;在字符串常量池中查看,是否存在内容为"abc"字符串对象;若存在,则将new出来的字符串对象与字符串常量池中的对象联系起来 若不存在,则在字符串常量池中创建一个内容为"abc"的字符串对象,并将堆中的对象与之联系起来。

3.String str = "abc"创建对象的过程 

首先在常量池中查找是否存在内容为"abc"字符串对象;如果不存在则在常量池中创建"abc",并让str引用该对象;如果存在则直接让str引用该对象。

4.String str1 = "abc"; String str2 = "ab" + "c"; str1==str2?

true。因为String a="ab"+"c"会在编译时期已经进行优化,等价于String a = "abc";

5.String str1 = "abc"; String str2 = "ab"; String str3 = str2 + "c"; str1==str3?

false。因为String str3 = str2 + "c"涉及到变量(不全是常量)的相加,所以会生成新的对象,其内部实现是先new一个StringBuilder,然后 append(str2),append("c");然后让str3引用toString()返回的对象。

6.StringBuilder与 StringBuffer

    StringBuilder:线程非安全的

    StringBuffer:线程安全的

    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

 

7.对于三者使用的总结: 1.如果要操作不改变的字符串= String

              2.单线程操作字符串缓冲区 下操作经常改变的字符串 = StringBuilder

              3.多线程操作字符串缓冲区 下操作经常改变的字符串 = StringBuffer


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java—String、StringBuffer、StringBuilder的用法与区别

StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用Stri...

Java关键字系列 — String、StringBuffer、StringBuilder的区别和使用

java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,具体说原理的话,我们可以用两个例子来说明。 变量相加 运算str1、str2和str3...

Java笔记—String,StringBuffer ,StringBuilder 的区别

StringBuffer:       A thread-safe, mutable sequence of characters. A string buffer is like a String...

java学习—探秘Java中的String、StringBuilder以及StringBuffer

相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它...

String、StringBuffer与StringBuilder之间区别-----(java复习)

1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String  2.String 的原因     String:字符串常量     Strin...

小瓜牛漫谈 — String、StringBuffer、StringBuilder

任何一个系统在开发的过程中, 相信都不会缺少对字符串的处理。 在 java 语言中, 用来处理字符串的的类常用的有 3 个: String、StringBuffer、StringBuilder。...

黑马程序员—javaSE—String&StringBuffer&StringBuilder

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-1、String类的概述 * 通过JDK提供的API,查看String类的说明* 可以看到这样的两句话。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)