运行速度快慢为:StringBuilder > StringBuffer > String

 想要了解一个类,最好的办法就是看这个类的实现源代码,String类的实现在

  \jdk1.6.0_14\src\java\lang\String.java   文件中。

  打开这个类文件就会发现String类是被final修饰的:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

public final class String

    implements java.io.Serializable, Comparable<String>, CharSequence

{

    /** The value is used for character storage. */

    private final char value[];

 

    /** The offset is the first index of the storage that is used. */

    private final int offset;

 

    /** The count is the number of characters in the String. */

    private final int count;

 

    /** Cache the hash code for the string */

    private int hash; // Default to 0

 

    /** use serialVersionUID from JDK 1.0.2 for interoperability */

    private static final long serialVersionUID = -6849794470754667710L;

 

    ......

 

}

  从上面可以看出几点:

  1)String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法。在Java中,被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。

String 是字符串常量

Java StringBuffer 和 StringBuilder 类——StringBuffer字符串变量、StringBuilder字符串变量

 

String、StringBuilder以及StringBufferString、StringBuilder以及StringBuffer

三者的区别

String、StringBuilder以及StringBuffer

(1)字符修改上的区别(主要,见上面分析)

(2)初始化上的区别,String可以空赋值,后者不行,报错

①String

StringBuffer s = null;   

StringBuffer s = “abc”;   

②StringBuffer

StringBuffer s = null; //结果警告:Null pointer access: The variable result can only be null at this location

StringBuffer s = new StringBuffer();//StringBuffer对象是一个空的对象

StringBuffer s = new StringBuffer(“abc”);//创建带有内容的StringBuffer对象,对象的内容就是字符串”

小结:(1)如果要操作少量的数据用 String;

(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;

(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder

 

相关文章:

  • 2021-09-03
  • 2021-04-12
  • 2021-12-20
  • 2021-04-14
  • 2021-06-21
  • 2021-09-11
  • 2021-12-22
  • 2021-08-06
猜你喜欢
  • 2021-10-27
  • 2021-11-22
  • 2021-09-29
  • 2021-09-06
  • 2021-10-22
相关资源
相似解决方案