1 Java中的字符串
Java中的字符串类型是一种引用类型java.lang.String
。另外,还有两种辅助字符串类型java.lang.StringBuffer
和java.lang.StringBuilder
。
1.1 String、StringBuffer和StringBuilder的区别
1.1.1 String的不可变性
String是字符串常量类,最大的特点就是不可修改。
看下面代码:
String s="Hello";
System.out.println(s);
s="Hello World";
System.println(s);
输出结果为:
Hello
Hello World
看似s的内容改变了。但是,上面的代码实际上是先把内容为"Hello"的字符串对象赋给s,后来又把内容为"Hello World"的对象赋给s,并不是在一个对象上改变它的内容。事实上,String类封装了一个final的char[]类型属性。
String字符串的不可变性有很对好处,比如字符串常量池的实现、字符串的安全性与高效性。关于String的深入剖析涉及到JVM的运行机制,有兴趣可以看一下这篇博客:深入理解Java中的String(大坑)
但同时使得涉及字符串内容的更新操作都会创建一个新的String对象,影响性能。所以,为了高效完成字符串的修改操作,Java提供了StringBuffer类和StringBuilder类。
1.1.2 可变字符串类型StingBuffer和StringBuilder
String