高并发、高可用环境中java字符串的正确使用方式

        在java中,我们都知道String是不可变的,StringBuilder和StringBuffer是可变的。而StringBuffer是线程安全的,而StringBuilder是非线程安全的。

但是,对于它们使用的场景,我们也需要知道:

1、在有字符串存在大量的修改操作下,我们一般使用 StringBuffer 或者 StringBuilder

2、在有字符串存在大量的修改操作下,并且是在单线程的情况下,我们一般使用 StringBuilder

3、如果在有串存在大量的修改操作下,并且在多线程的情况下,我们一般使用 StringBuffer

4、在有字符串很少修改的情况下,被多个对象引用,我们一般使用 String,比如配置信息等。

性能比较:

1、String的性能是最低的,因为它不可变,意味着在做字符串拼接和修改时,需要反复地重新地创建新的对象和分配内存。

2、其次是StringBuffer,它要比String性能高,因为它的可变性使得字符串可以直接被修改。

3、性能最高的是StringBuilder,因为StringBuffer加了同步锁,而StringBuilder是无阻塞的。

数据存储方式:String存储在字符串常量池中。StringBuffer和StringBuilder存储在堆内存空间。

注意:循环体内,比如for循环,字符串的连接方式,使用StringBuilder的append,不要使用+。

你可能感兴趣的:(java)