码迷,mamicode.com
首页 > 其他好文 > 详细

关于String StringBuffer 和 StringBulider

时间:2017-06-01 21:36:15      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:ati   for   ++   nop   缓冲   nbsp   线程安全   技术分享   不能   

String是java中字符串中引用类型。

1.关于==和equals,String字符串的==通常用来判断两个字符串在内存中的地址是否一致,equals用来判断字符串中存放的内容是否一致。

技术分享
public class Strings {
    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = "hello";
        String str3 = new String("hello");
        String str4 = "he"+"llo";
        String str5 = "he";
        str5 = str5 +"llo";
        
        System.out.println(str1==str2);   //true;
        System.out.println(str1==str3);   //false;
        System.out.println(str1==str4);      //true;
        System.out.println(str1==str5);   //false;
        System.out.println("--------------------");
        System.out.println(str1.equals(str2));   //true;
        System.out.println(str1.equals(str3));   //true;
        System.out.println(str1.equals(str4));   //true;
        System.out.println(str1.equals(str5));   //true;
    }
}
技术分享

2.关于字符串的运算效率问题。在字符串的多次循环叠加中直接使用"+"是非常耗费内存和时间的,因为每一次相加,系统都将创建一次对象。建议使用StringBuilder进行字符串运算,可以有效解决字符串相加效率不高的问题。

技术分享
    private static String stringCal() {   //3486ms
        String s0 = "abcdefghijklmnopqrstuvwxyz";
        String s = "";
        for(int i=0;i<10000;i++) {
            s += s0;//s = s + s0;
        }
        return s;
    }
    
    private static String stringBuildCal() { //2ms
        String s0 = "abcdefghijklmnopqrstuvwxyz";
        StringBuilder s = new StringBuilder();
        for(int i=0;i<10000;i++) {
            s.append(s0);
        }
        return s.toString();
    }
    
技术分享

 StringBuilder与 StringBuffer

    StringBuilder:线程非安全的

    StringBuffer:线程安全的

    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

关于String StringBuffer 和 StringBulider

标签:ati   for   ++   nop   缓冲   nbsp   线程安全   技术分享   不能   

原文地址:http://www.cnblogs.com/lxsir/p/6930783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!