zoukankan      html  css  js  c++  java
  • String、StringBuffer、StringBuilder的一些小经验……

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

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

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

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

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

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

           

      2.StringBuffer和StringBuilder有什么区别?

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

       

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

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

      

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

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

     1 public class StringTest {
     2     
     3     private static final String STRING = "天";
     4     
     5     public void setSystem(){
     6         StringBuilder f = new StringBuilder("5");
     7         System.out.println(f.append(STRING));
     8     }
     9     
    10     public static void main(String[] args) {
    11         StringTest s = new StringTest();
    12         s.setSystem();
    13     }
    14 }

       

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

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

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

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

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

      

     

     

    做IT的光看不行,多做方有所得。
  • 相关阅读:
    2-用EasyNetQ连接RabbitMQ(黄亮翻译)
    1-EasyNetQ介绍(黄亮翻译)
    MVC之——Razor语法
    MVC过滤器的用法
    MVC初级知识之——Routing路由
    MVC初级知识之——View与Controller的讲解
    MVC初级教程(四)
    MVC初级教程(三)
    MVC初级教程(二)
    MVC初级教程(一)
  • 原文地址:https://www.cnblogs.com/xinluwutu/p/5948871.html
Copyright © 2011-2022 走看看