String,StringBuffer,StringBuilder的区别
都依凡
撰写于 2023年 05月 27 日

  1. 可变性

String是final修饰的,他是一个不可变的类,他在每次创建字符串的时候是新建了一个对象,StringBuffer和StringBuilder是一个可变的类,他在每次更改的时候会在源对象的基础上更改,并不会重新创建对象

  1. 线程安全性

String是一个不可变的类,所以他是一个线程安全的,StringBuffer也是一个线程安全的,他的每一个方法都用了一个Synchronized一个同步关键字修饰,StringBuider不是一个线程安全的,多线程的情况下应该使用StirngBuffer

  1. 性能方面

String是性能最低的,因为他是不可变的类,每次修改都是创建对象,StringBuffer是可变的,每次字符串修改或者拼接的时候他不会重新创建对象,StringBuider的性能是最高的,因为StringBuffer是加了锁的,加锁之后性能方面会有所损耗

  1. 存储方面

String存储在字符串常量池中,StringBuffer和StringBuilder是存储在堆内存中

String,StringBuffer,StringBuilder的区别

  1. 可变性

String是final修饰的,他是一个不可变的类,他在每次创建字符串的时候是新建了一个对象,StringBuffer和StringBuilder是一个可变的类,他在每次更改的时候会在源对象的基础上更改,并不会重新创建对象

  1. 线程安全性

String是一个不可变的类,所以他是一个线程安全的,StringBuffer也是一个线程安全的,他的每一个方法都用了一个Synchronized一个同步关键字修饰,StringBuider不是一个线程安全的,多线程的情况下应该使用StirngBuffer

  1. 性能方面

String是性能最低的,因为他是不可变的类,每次修改都是创建对象,StringBuffer是可变的,每次字符串修改或者拼接的时候他不会重新创建对象,StringBuider的性能是最高的,因为StringBuffer是加了锁的,加锁之后性能方面会有所损耗

  1. 存储方面

String存储在字符串常量池中,StringBuffer和StringBuilder是存储在堆内存中

版权属于:都依凡 所有,采用《知识共享署名许可协议》进行许可,转载请注明文章来源。

本文链接: http://blog.anlucky.cn/index.php/programming/java/165

赞 (11)

评论区(暂无评论)

啊哦,评论功能已关闭~