String,StringBuffer和StringBuilder的区别及使用场景[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。
String:字符串常量 。
StringBuffer 与 StringBuilder是字符缓冲变量。
StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是StringBuffer中的方法大都采用了synchronized 关键字进行修饰,因此是线程安全的,而StringBuilder没有这个修饰,可以被认为是线程不安全的。StringBuilder 是在JDK1.5才加入的。jdk的实现中StringBuffer与StringBuilder都继承自AbstractStringBuilder。 1、String类型的字符串对象是不可变的,一旦String对象创建后,包含在这个对象中的字符系列是不可以改变的,直到这个对象被销毁。 2、StringBuilder和StringBuffer类型的字符串是可变的,不同的是StringBuffer类型的是线程安全的,而StringBuilder不是线程安全的 3、如果是多线程环境下涉及到共享变量的插入和删除操作,StringBuffer则是首选。如果是非多线程操作并且有大量的字符串拼接,插入,删除操作则StringBuilder是首选。毕竟String类是通过创建临时变量来实现字符串拼接的,耗内存还效率不高,怎么说StringBuilder是通过JNI方式实现终极操作的。 4、StringBuilder和StringBuffer的“可变”特性总结如下: (1)append,insert,delete方法最根本上都是调用System.arraycopy()这个方法来达到目的 (2)substring(int, int)方法是通过重新new String(value, start, end – start)的方式来达到目的。因此,在执行substring操作时,StringBuilder和String基本上没什么区别。 总的来说,三者在执行速度方面的比较:StringBuilder > StringBuffer > String。
1.使用String类的场景:在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算。
2.使用StringBuffer类的场景:在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装。
3.使用StringBuilder类的场景:在频繁进行字符串运算(如拼接、替换、和删除等),并且运行在单线程的环境中,则可以考虑使用StringBuilder,如SQL语句的拼装、JSON封装等。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/191205.html原文链接:https://javaforall.cn
相关文章
- java map 转string_java-将Map <String,Object>转换为Map <String,String>
- Sonic云真机测试平台在windows的部署及使用
- java %08d_总结Java中String.format()的使用[通俗易懂]
- 【说站】python正则表达式中分组的使用
- pytest学习和使用5-Pytest和Unittest中的断言如何使用?
- 如何使用GoLang将JT808协议中的DWORD类型转为string?
- 使用fastjsonlist和String互转
- 使用Zuul实现安全和认证(一)
- Redis02 使用Redis数据库(String类型)全面解析
- linux中echo命令的使用详解程序员
- Python 字符串操作及string模块使用详解编程语言
- Oracle 视图 DBA_HIST_CHANNEL_WAITS 官方解释,作用,如何使用详细说明
- MySQL Variables warning_count 数据库 参数变量解释及正确配置使用
- vue attribute中使用字符串模板 template string详解编程语言
- 使用C、SSH与Linux实现无线操控(csshlinux)
- 应该在Linux上使用的10种云解决方案
- 腾讯云Redis快速上手使用教程(腾讯云redis使用教程)
- 避免使用id作为mysql关键字(mysql 不要id)
- Oracle中使用主外键关系删除数据详解(oracle 主外键删除)
- 如何使用ajax开发web应用程序第1/2页
- PHP中的string类型使用说明
- 使用Json比用string返回数据更友好,也更面向对象一些
- 解析Android中string-array数据源的简单使用
- Java使用String类格式化当前日期实现代码
- Python字典dict使用介绍