当前位置: 首页 > news >正文

Java——面试:String 和 StringBuffer 的区别?

相同点:

String 和 StringBuffer,它们可以储存和操作字符串, 即包含多个字符的字符数据。

String 和 StringBuffer 的区别有以下几点:

1.String 类提供了数值不可改变的字符串。而 StringBuffer 类提供的字符串进行修改。
当你知道字符数据要改变的时候你就可以 使用 StringBuffer 。典型地,你可以使用 StringBuffers 来动态构造字符数据。
2.String 实现了 equals 方法, new String(“abc”).equals(new String(“abc”) 的结果为 true,
StringBuffer 没有实现 equals 方法, new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为 false
3.我们要把 1 10000  的所有数字拼起来,组成 一个串。
import java.util.Date;
public class Test01 {public static void main(String[] args) {//StringBuffer 把 1 到 10000 的所有数字拼起来,组成一个字符串StringBuffer stringBuffer = new StringBuffer();long start  = new Date().getTime();for(int i=0;i<10000;i++){stringBuffer.append(i);}long end = new Date().getTime();System.out.println(end-start);//String 把 1 到 10000 的所有数字拼起来,组成一个字符串String string = new String();long start1  = new Date().getTime();for(int i=0;i<10000;i++){string = string + i;}long end1 = new Date().getTime();System.out.println(end1-start1);}
}
上面的代码效率很高,因为只创建了一个 StringBuffer 对象,而下面的代码
效率很低,因为创建了 10001 个对象。
4. StringBuilder StringBuffer相比,后者是线程安全的,前者是线程不安全,所以在使用时,对少量数据进行操作时选择String,对大量数据进行操作时,多线程使用StringBuffer,单线程使用StringBuilder。
5.Sring 覆盖了 equals 方法和 hashCode 方法,而 StringBuffer 没有覆盖 equals 方法和 hashCode 方法,所以,将 StringBuffer 对象存储进 Java 集合类中时会出 现问题。
http://www.lryc.cn/news/254733.html

相关文章:

  • 图扑软件受邀出席高交会-全球清洁能源创新博览会
  • vue项目下npm或yarn下安装echarts多个版本
  • 在内网开发中使用Nginx代理来访问钉钉新版服务端API
  • 机器学习算法如何进行特征重要性评估
  • 运行启动vue项目报报错node: --openssl-legacy-provider is not allowed in NODE_OPTIONS解决
  • 网工学习5 交换机端口相关配置
  • 使用Pytorch从零开始实现CLIP
  • Java网络编程 *TCP与UDP协议*
  • 校园外卖小程序源码系统 附带完整的搭建教程
  • TiDB专题---1、TiDB简介和特性
  • 如何二次封装一个Vue3组件库?
  • 2024年网络安全比赛--系统渗透测试(超详细)
  • 高效的单行python脚本
  • 如何通过内网穿透实现无公网IP也能远程访问内网的宝塔面板
  • 【广州华锐互动】VR沉浸式体验铝厂安全事故让伤害教育更加深刻
  • CFLAGS、CXXFLAGS、FFLAGS、FCFLAGS、LDFLAGS、LD_LIBRARY_PATH区别
  • 阿里云租赁费用_阿里云服务器多配置报价表
  • 网络层(1)——概述
  • 计算机网络——网络层
  • Antd search input无中框
  • 【PyTorch】概述
  • 非对象集合交、并、差处理
  • 时间序列预测实战(二十五)PyTorch实现Seq2Seq进行多元和单元预测(附代码+数据集+完整解析)
  • 电子学会C/C++编程等级考试2022年09月(三级)真题解析
  • 【数据库】基于时间戳的并发访问控制,乐观模式,时间戳替代形式及存在的问题,与封锁模式的对比
  • Python 日志(略讲)
  • C++ 指针进阶
  • stm32中滴答定时器与普通定时器的区别
  • 某60区块链安全之薅羊毛攻击实战一学习记录
  • Java程序员,你掌握了多线程吗?(文末送书)