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

string字符串内容倒叙_面试题:String,StringBuffer 和StringBuilder三者的区别,以及如何实现一个字符串倒序?...

面试题:String , StringBuffer 和StringBuilder三者的区别,以及如何实现一个字符串倒序?

答案

String 的长度是不可变的,StringBuffer的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用 StringBuffer或者StringBuilder。StringBuffer 和 StringBuilder主要区分是在线程安全和执行速度上。StringBuffer线程安全但速度慢,StringBuilder非线程安全但速度快。

字符串倒序

字符串“abcde”通过写一个函数不让调用第三方的字符串,实现一个字符串倒序,比如字符串“abcde” 变成“edcba”

答: String src = "ABCDEF ";

String dst = new StringBuffer(src).reverse().toString();

private String reverse(String src){

return new StringBuffer(src).reverse().toString();

}

探究String和StringBuffer的区别

String 字符串(长度不可变)

String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String 。

因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。

探究StringBuffer 和 StringBuilder 类的区别

StringBuffer 字符串变量(线程安全,但执行速度慢)

StringBuilder 字符串变量(非线程安全,但执行速度快)

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

总结

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

当对字符串进行修改的时候,特别是字符串对象经常改变的情况下,需要使用 StringBuffer 和 StringBuilder 类。

StringBuffer 和 StringBuilder主要区分是在线程安全和执行速度上。StringBuffer线程安全但速度慢,StringBuilder非线程安全但速度快。

相关文章:

  • 地脚螺钉直径系列_地脚螺钉的作用,地脚螺钉直径规格!
  • redis课程视频 黄建宏_Redis从入门到精通 视频教程 下载
  • 是什么_格什么条?格拉什么?什么拉条?
  • fetch 自动加cookie_selenium自动化测试之--验证码处理
  • tomcat中的mdmp文件_Tomcat的使用(详细流程)
  • iot架构 mqtt netty_MQTT 协议是什么
  • echart 三维可视化地图_可视化地图是什么?推荐3个工具!
  • python修改json文件value值_python批量修改json文件
  • getpostdata php7.0_我整理的PHP 7.0主要新特性
  • 是什么字_面试官:“狗”字去掉一笔,是什么字?专科生1秒回答,全场鼓掌...
  • 判断字符串_04Python里字符串的常用操作方法三判断
  • intl扩展 mac 安装php_MAC下PHP7.1.23安装intl3.0.0
  • 5 日期范围查询_SQL 之 简单查询
  • 线段测量_CAD看图软件技巧:一分钟学会CAD多线段测量
  • python格式字符_相当实用的Python格式字符串,格式化
  • Android优雅地处理按钮重复点击
  • Go 语言编译器的 //go: 详解
  • JS函数式编程 数组部分风格 ES6版
  • js作用域和this的理解
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • maya建模与骨骼动画快速实现人工鱼
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Promise面试题,控制异步流程
  • vue--为什么data属性必须是一个函数
  • webpack入门学习手记(二)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 番外篇1:在Windows环境下安装JDK
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 为视图添加丝滑的水波纹
  • 译米田引理
  • 应用生命周期终极 DevOps 工具包
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • mysql面试题分组并合并列
  • 积累各种好的链接
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ###STL(标准模板库)
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (02)vite环境变量配置
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (转载)利用webkit抓取动态网页和链接
  • .Net组件程序设计之线程、并发管理(一)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @media screen 针对不同移动设备
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [.NET]桃源网络硬盘 v7.4
  • [ActionScript][AS3]小小笔记