当前位置:操作系统 > 安卓/Android >>

[Android面试题-6] 有关String,StringBuffer,StringBuilder类

题目:请简单描述一下String,StringBuffer和StringBuilder的区别,并解释一下为什么String是不可变的。
 
分析:对于以上三个关于字符串的类,主要区别如下:
 
String:字符串常量,其属性为final。
 
StringBuffer:字符串变量,线程安全。
 
StringBuilder:字符串变量,非线程安全。
 
1.String和StringBuffer的区别主要在于String是不可变的,执行如下代码:
 
 
String a = "1";  
a = a + "2";  
          
StringBuffer b = new StringBuffer("2");  
b.append("3");  

 

 
对于与a来说,当执行a = a + "2";之后,实际上JVM生成了一个新的String对象,然后将a指向新的对象,表面上看起来没有什么特别的,但是底层其实执行了较多的内存操作,所以对于那些需要经常变化的字符串,最好不要用String;对于b来说,append操作只是在原来的字符串后面添加了一个字符,所以经常变换内容的字符串建议使用StringBuffer。
 
2.StringBuffer和StringBuilder的主要区别在与线程安全方面。
 
StringBuilder是非线程安全的,但是它的效率要比Buffer高,所以在单线程操作的情况下,最好用StringBuilder替代StringBuffer。
 
 
由于笔者水平有限,给各面试题提供的思路或代码难免会有错误,还请读者批评指正。另外,热忱欢迎读者能够提供更多、更好的面试题,本人将感激不尽。如有任何意见或建议,欢迎在评论中告知。
博主徐方磊对本博客文章享有版权。网络转载请注明出处http://blog.csdn.net/shishengshi。整理出版物请和作者联系。
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,