一说String、StringBuffer和StringBuilder,想必大家都很熟悉,这三者经常在我们的面试题中出现,我也是看到了关于这三个的经典面试题,才触动了我之前工作中的一些经历,故而根据我自己的经验,来写写自己的感悟,分享于诸位。

  首先来看下我看到的这两道面试题:

  1.String和StringBuffer区别,哪个效率高。

   答:String 是对一串字符进行操作是不可变类

StringBuffer是对一串字符进行操作,但是可变类

     String每用一次就需要生成一次效率低。

       

  2.StringBuffer和StringBuilder有什么区别?

   答:Stringbuilder 和Stirngbuffer都是可变对象,Stringbuilder 的运行速度快,线程不安全。

   

    这两道题的答案是正确的,但是在实际编码中如何来合理运用这三者呢?

    首先,String类型是不可变的,那么我们一定要切记不能用String在循环中使用连接字符串,特别是web工程中,当大量访问的情况下,这种方式消耗的资源非常大。如下:

  

 //这种连接方法一定要避免
for(int i=0;i<100;i++){
String a = "a";
String b = "b";
System.out.println(a+b);
}

   那么,String应该用到什么情况下呢?我们根据它不可变的性质,当遇到重复使用的固定的字符串时,将字符串定义为静态常量,再使用StringBufferStringBuilder来进行拼接操作。如下:

 public class StringTest {

     private static final String STRING = "天";

     public void setSystem(){
StringBuilder f = new StringBuilder("5");
System.out.println(f.append(STRING));
} public static void main(String[] args) {
StringTest s = new StringTest();
s.setSystem();
}
}

  接下来,讲StringBufferStringBuilder的使用场合。

  我们已知:StringBuffer是线程安全的,速度较慢的;而StringBuilder是不安全的,速度较快的。

  那么我们要分析一下,是保证线程安全,还是追求速度。

  我们在进行web项目开发时,通常会使用框架,那就要看看使用的框架是单线程的还是多线程的,如果框架是线程安全的,那我们就可以追求速度,使用StringBuilder即可。如果是不安全的,那最好使用StringBuffer

  不过这也不是绝对的,在开发中可以根据项目要求来灵活选择。

  

String、StringBuffer、StringBuilder的一些小经验……的更多相关文章

  1. 关于String StringBuffer StringBuilder

    0. String对象的创建       1.关于类对象的创建,很普通的一种方式就是利用构造器,String类也不例外:String s=new String("Hello world&qu ...

  2. String StringBuffer StringBuilder (转)

    转自:http://www.iteye.com/topic/522167 众所周知,String是由字符组成的串,在程序中使用频率很高.Java中的String是一个类,而并非基本数据类型. 不过她却 ...

  3. final,finally,finalize有什么区别?String, StringBuffer, StringBuilder有什么区别?Exception和Error有什么区别?

    继上篇JVM学习之后,后面将分三期深入介绍剩余JAVA基础面试题,每期3题. 题目一.final,finally,finalize有什么区别? /*请尊重作者劳动成果,转载请标明原文链接:*/ /* ...

  4. 转:String StringBuffer StringBuilder区别

    转自:http://www.iteye.com/topic/522167 作者:每次上网冲杯Java时,都能看到关于String无休无止的争论.还是觉得有必要让这个讨厌又很可爱的String美眉,赤裸 ...

  5. 重温java中的String,StringBuffer,StringBuilder类

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

  6. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  7. String,StringBuffer,StringBuilder的区别

    public static void main(String[] args) { String str = new String("hello...."); StringBuffe ...

  8. [置顶] String StringBuffer StringBuilder的区别剖析

    这是一道很常见的面试题目,至少我遇到过String/StringBuffer/StringBuilder的区别:String是不可变的对象(final)类型,每一次对String对象的更改均是生成一个 ...

  9. Java学习笔记--String StringBuffer StringBuilder

    String StringBuffer StringBuilder String http://docs.oracle.com/javase/7/docs/api/ 中文: http://www.cn ...

  10. 【Java基础】String StringBuffer StringBuilder

    String String是不可变的 我们都知道String不是基本数据类型,而是一个对象,并且是final类型的,不可变的.(public final class String) 查看以下代码: S ...

随机推荐

  1. Sql Server 2012 Enterprise Edition 企业版 迅雷 下载地址

    Sql Server 2012 Enterprise Edition 企业版 迅雷 下载地址 版本号 cn_sql_server_2012_enterprise_edition_x86_x64_dvd ...

  2. MFC中无边框窗口的拖动

      void CXXXXDialog::OnLButtonDown(UINT nFlags, CPoint point) { PostMessage(WM_NCLBUTTONDOWN, HTCAPTI ...

  3. Android笔记之——消息Toast

    java: package com.example.myapplication;import android.support.v7.app.AppCompatActivity;import andro ...

  4. spring 异常记录

    1.异常: java.lang.IllegalArgumentException: No converter found for return value of type: class java.ut ...

  5. VPN服务器是什么?

    可能很多人听到VPN的第一感觉是它是一个FQ的工具,然而并不是酱紫的. 虚拟专用网(Virtual Private Network,简称VPN),是一种常用于连接中.大型企业或团体与团体间的私人网络的 ...

  6. python第二十天-----Django补充

    学习python已经20天了啊,从一个不萌萌哒的战5渣升级到了一个萌萌哒的战5渣 1.分页(这是一个很通用的模块,不论在任何框架里都可以使用哦) class Page(object): def __i ...

  7. [转]VS2013自带SQL Server 的启用方法

    本文转自:http://www.icharm.me/vs2013%E8%87%AA%E5%B8%A6%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93sql-server-exp ...

  8. php入门,配置wampserver

    wamp安装过程中将网站的根目录设置在www目录下,这里记录如何定义自己的根目录,以便以后需要是查看 1.启动wampserver,左键选择apache下的httpd.conf,将文件中Documen ...

  9. 改变jboss部署目录(虚拟目录)

    笔记: 在开发过程中,有时候我们希望将程序放在我们的源代码目录中,比如d:\code下,而不是放在jboss的deploy下,怎么办? 我们知道,jboss中集成了tomcat,因此跟tomcat一样 ...

  10. final阶段140字评论1

    1.约跑app         此次演讲增加了摄像头演示的功能,所以界面可以看得更清楚,演示的比上次完整,流畅,约跑这个项目感觉对于我们颇有使用价值,大家现在都热爱跑                 ...