程序员人生 网站导航

探秘Java中的String、StringBuilder以及StringBuffer

栏目:php教程时间:2016-09-28 10:13:14

探秘Java中String、StringBuilder和StringBuffer

  相信String这个类是Java中使用得最频繁的类之1,并且又是各大公司面试喜欢问到的地方,今天就来和大家1起学习1下String、StringBuilder和StringBuffer这几个类,分析它们的异同点和了解各个类适用的场景。下面是本文的目录大纲:

  1.你了解String类吗?

  2.深入理解String、StringBuffer、StringBuilder

  3.不同场景下3个类的性能测试

  4.常见的关于String、StringBuffer的面试题(辟谣网上流传的1些歪曲String类的说法)

  若有不正的地方,请多多体谅和指正,不胜感激。

  请尊重作者劳动成果,转载请标明转载地址:

   http://www.cnblogs.com/dolphin0520/p/3778589.html

1.你了解String类吗?

  想要了解1个类,最好的办法就是看这个类的实现源代码,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 = ⑹849794470754667710L;
 
    ......
 
}

  从上面可以看出几点:

  1)String类是final类,也即意味着String类不能被继承,并且它的成员方法都默许为final方法。在Java中,被final修饰的类是不允许被继承的,并且该类中的成员方法都默许为final方法。在初期的JVM实现版本中,被final修饰的方法会被转为内嵌调用以提升履行效力。而从Java SE5/6开始,就渐渐摈弃这类方式了。因此在现在的Java SE版本中,不需要斟酌用final去提升方法调用效力。只有在肯定不想让该方法被覆盖时,才将方法设置为final。

  2)上面罗列出了String类中所有的成员属性,从上面可以看出String类实际上是通过char数组来保存字符串的。

  下面再继续看String类的1些方法实现:

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐