zoukankan      html  css  js  c++  java
  • 面试题05-String-StringBuffer-StringBuilder

    • String是final修饰的,不可变,每次操作都会产生新的String对象
    public final class String
        implements java.io.Serializable, Comparable<String>, CharSequence,
                   Constable, ConstantDesc {
        ......
    }
    
    • StringBuffer和StringBuilder都是再原对象上操作
    • StringBuffer是线程安全的,StringBuilder是线程不安全的
    • StringBuffer方法都是synchronized修饰的
    public final class StringBuffer
            extends AbstractStringBuilder
            implements java.io.Serializable, Comparable<StringBuffer>, CharSequence {
        /* ...... */
        @Override
        public synchronized int compareTo(StringBuffer another) {
            return super.compareTo(another);
        }
    
        @Override
        public synchronized int length() {
            return count;
        }
    
        @Override
        public synchronized int capacity() {
            return super.capacity();
        }
    
    
        @Override
        public synchronized void ensureCapacity(int minimumCapacity) {
            super.ensureCapacity(minimumCapacity);
        }
    
        /* ...... */
    }
    
    • 性能:StringBuilder>StringBuffer>String
    • 使用场景:

    经常需要改变字符串内容时使用后面两个
    优先使用StringBuilder,多线程使用共享变量时使用StringBuffer

  • 相关阅读:
    并发编程-协程
    并发编程--线程
    并发编程--进程
    并发编程--操作系统介绍
    套接字Socket
    网络基础
    异常处理
    面向对象-常用模块
    面向对象进阶(反射)
    C#项目优化
  • 原文地址:https://www.cnblogs.com/jsit-dj-it/p/15457899.html
Copyright © 2011-2022 走看看