String、StringBuilder、StringBuffer的区别?以及为什么String是内容不可变的字符串

    xiaoxiao2023-10-12  164

    三者共同点:三者均是java提供的表示和操作字符串的类。不同点: 首先从源码角度来说 String是内容不可变的字符串 是因为源码中由final进行修饰。

    从内存角度来分析:

    StringBuilder 和 StringBuffer都是内容可变字符串

    在字符串拼接时,建议使用StringBuilder和StringBuffer的append()方法,比用String来拼接的效率更高。

    public static void main(String[] args) { String s1 = "a"+"b"; System.out.println(s1); StringBuilder s2 = new StringBuilder(); s2.append("a").append("b"); System.out.println(s2); StringBuffer s3 = new StringBuffer(); s3.append("a").append("b"); System.out.println(s3); }

    结果:

    ab ab ab

     

    2.StringBuilder:线程不安全、效率较高。

       StringBuffer:线程安全、效率较低(因为要加锁)。

    最新回复(0)