美文网首页
java基础(二)

java基础(二)

作者: 贝贝ovo | 来源:发表于2020-03-22 17:49 被阅读0次

    1. String、StringBuffer、StringBuilder区别

    String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。用于存放字符的数组被声明为final的,因此只能赋值一次,不可再更改。

    StringBuffer(JDK1.0):字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法。

    StringBuilder(JDK5.0):字符串变量(非线程安全)。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。

    String 类型和StringBuffer的主要性能区别:String是不可变的对象, 因此在每次对String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,性能就会降低。

    使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。所以多数情况下推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。

    基本原则

    如果要操作少量的数据,用String ;
    单线程操作大量数据,用StringBuilder ;
    多线程操作大量数据,用StringBuffer。

    相关文章

      网友评论

          本文标题:java基础(二)

          本文链接:https://www.haomeiwen.com/subject/hcpvyhtx.html