• String、StringBuffer、StringBuilder的区别


      String、StringBuffer、StringBuilder这三个类在字符串处理中都很常用,而且功能上也可以说很相似,那么他们有什么区别呢?

    1、首先String是字符串常量,StringBuffer、StringBuilder是字符串变量。为什么说String是字符串常量,用下面的例子说明。

    1 String t = "ab";
    2 t = t + "c";

    这个例子在JVM中的过程其实是,创建t对象,然后赋值“ab”,再创建一个新的t对象,来赋值“ab”+“c”,所以原先的t对象并没有改变,所以称String为字符串常量。而StringBuffer和StringBuiler操作时是不会产生新的对象,是直接对原对象进行操作。

    2、在执行速度上String<(StringBuffer,StringBuiler)。

    通过第1点可以看出,String在操作时会不断产生新的对象,所以执行效率上StringBuffer和StringBuiler比String高。

    3、StringBuffer是线程安全的,StringBuilder不是线程安全的。

    在单线程情况下两者的速度是相差无几的,但是在多线程的情况下StringBuffer为保证线程的安全性,在必要时会做一些同步的操作,所以速度上StringBuffer<StringBuilder。

    总结:

    1、在做少量字符串操作时优先使用String,在做大量字符串操作时优先使用StringBuffer或StringBuilder。

    2、单线程环境下优先使用StringBuilder,多线程环境下,为了保证线程安全需要牺牲一点速度,优先使用StringBuffer。

  • 相关阅读:
    java的内部编码
    visual studio 快捷键
    C# ref和out总结
    C#函数3递归
    链表操作 两个链表间的相交性问题
    链表操作 有环链表问题
    链表操作 模拟问题
    链表操作 未排序链表的处理问题
    jjQuery 源码分析1: 整体结构
    jQuery 源码分析3: jQuery.fn/ jQuery.prototype
  • 原文地址:https://www.cnblogs.com/pcheng/p/6479860.html
Copyright © 2020-2023  润新知