java基础四-String/StringBuffer/StringBuilder区别

String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。

StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,它的方法是同步的,可以在多线程环境中使用而不会出现数据竞争和不一致的问题。因为方法是同步的,所以在多线程环境中使用StringBuffer会带来一些性能上的损失。

而StringBuilder 是非线程安全的,它的方法没有进行同步,不适合在多线程环境中使用。但是由于不需要进行同步,StringBuilder在单线程环境下性能比StringBuffer更好。

String常用方法:

    /*** indexOf():返回指定字符的索引。*         charAt():返回指定索引处的字符。*         replace():字符串替换。*         trim():去除字符串两端空白。*         split():分割字符串,返回一个分割后的字符串数组。*         getBytes():返回字符串的 byte 类型数组。*         length():返回字符串长度。*         toLowerCase():将字符串转成小写字母。*         toUpperCase():将字符串转成大写字符。*         substring():截取字符串。*         equals():字符串比较。*         (); 字符串转换为char数组*         contains(); 字符串是否包含指定的字符序列*/@Testvoid testStringMethod(){String str = " abdcdeeFQ111rta ";System.out.println("返回r的索引=" + str.indexOf('r'));System.out.println("返回3索引处的字符=" + str.charAt(3));str = str.replaceFirst("a","z");System.out.println("一个字符串替换为z后=" + str);str = str.trim();System.out.println("去除字符串两端空白=" + str);String[] strings = str.split("ee");System.out.println("分割字符串,返回一个分割后的字符串数组=" + strings[0]);byte[] bytes = str.getBytes();System.out.print("返回字符串的 byte 类型数组:");for (byte b:bytes) {System.out.print(" " + b);}System.out.println();System.out.println("返回字符串长度="+str.length());System.out.println("将字符串转成小写字母=" + str.toLowerCase());System.out.println("将字符串转成大写字符=" + str.toUpperCase());System.out.println("截取字符串从2到5的字符=" + str.substring(2,5));System.out.println("截取字符串从2到结束的字符=" + str.substring(2));System.out.println("字符串比较\"aaa\"是否和\"bbb\"相等:" + "aaa".equals("bbb") );char[] chars = str.toCharArray();System.out.println("字符串转换为char数组");System.out.println("字符串是否包含指定的字符序列:" + str.contains("111"));}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Golang 接口自动化07】struct转map的三种方式

目录 背景 struct转map 使用json模块 使用reflect模块 使用第三方库 测试 总结 资料获取方法 背景 我们在前面介绍过怎么使用net/http发送json或者map数据,那么它能不能直接发送结构体数据呢?我们今天一起来学习结构体struct转map的三种方法&am…

PHM的设备故障模型如何构建?

预测性维护与健康管理(Prognostics Health Management,PHM)是现代工业中的一个关键概念,它旨在通过使用数据和先进的分析技术,实现设备故障的早期预测和预防,从而最大限度地提高设备的可用性和可靠性。而在…

MySQL(一)

mysql简介 1、什么是数据库 ? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅…

如何运行疑难解答程序来查找和修复Windows 10中的常见问题

如果Windows 10中出现问题,运行疑难解答可能会有所帮助。疑难解答人员可以为你找到并解决许多常见问题。 一、在控制面板中运行疑难解答 1、打开控制面板(图标视图),然后单击“疑难解答”图标。 2、单击“疑难解答”中左上角的…

行为型模式之解释器模式

解释器模式(Interpreter Pattern) 解释器模式(Interpreter Pattern)是一种行为设计模式,它用于对语言的文法进行解释和解析,以实现特定的操作。 在解释器模式中,存在以下几个角色: 抽…

如何动态改变background-image

动态改变background-image 最近在开发uni-app小程序时尝试使用栅格布局利用u-grid-item循环遍历元素节点,其中每个元素节点对应的背景图片都不相同,于是就遇到了需要动态改变元素background-image的操作。 错误写法 如果单纯的使用常规的eslint写法。…

uniapp 长时间不操作,自动退出登录页

store 下的inex.js文件 import Vue from vue import Vuex from vuexVue.use(Vuex)const store new Vuex.Store({state: {// 记录最后一次点击时间的元素lastTime: new Date().getTime(),},mutations: {//点击事件调用,刷新最后一次点击时间lastTimeUpdata: (state…

大牛练成记:用JavaScript徒手写出一个日期选择插件

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:100个JavaScript的小应用。 🎉欢迎 👍点赞✍评论⭐收…

【C语言】初识指针

【C语言】初识指针 一、指针是什么?二、指针和指针类型1. 指针-整数2. 指针的解引用三、野指针1.野指针成因2 .如何规避野指针四、指针运算五、二级指针七、指针数组 🎈个人主页:库库的里昂🎐CSDN新晋作者🎉欢迎 &…

ansible安装及rhel8仓库配置

目录 一、本地仓库 问题: 解决: 1.创建一个仓库: 内容: 2.挂载: 挂载: 测试: 3.或者直接使用阿里云的源 二.配置ansible仓库 1.下载: 2.检查 一、本地仓库 问题: 当…

R并行计算-parallel例子1

前言: 通常,如果进程运行时间超过3分钟,则会考虑使用并行处理。 这听起来可能很复杂,但是并行计算很简单。 当你有一个重复的任务,它占用了你太多宝贵的时间,为什么不使用并行计算来节省时间呢&#xff…

vue3+uniapp自定义tabbar

首先把tabbar中的元素写在一个list中用v-for进行渲染 用一个interface进行定义接口,这样别人在review你的代码就可以清晰知道你的tabbar包含什么元素。 利用typescript特性进行类型定义,可以省去很多麻烦 import { reactive } from "vue" imp…

docker快速入门

文章目录 简介:组成:安装:运行:原理:常用命令:1.帮助启动类命令2.镜像命令3.容器命令4.命令交互图5.将镜像打包发布到阿里云1.将本地容器制作为镜像2.登录阿里云3.创建个人实例4.创建镜像仓库5.将镜像推送到…

马上解锁 StarRocks 存算分离,降本增效无需等!

StarRocks 于 4 月底正式发布了 3.0 版本,该里程碑版本带来了大家期盼已久的新特性--存算分离。此新功能一推出,立即受到社区热情追捧,用户纷纷开始在自己的业务中评估和测试存算分离效果。从芒果TV、聚水潭、网易邮箱、浪潮、天道金科等数十…

【VScode】Remote-SSH XHR failed无法访问远程服务器

问题概述 当使用VScode连接远程服务器时,往往需要使用Remote-SSH这个插件。而该插件有一个小bug,当远程服务器网络不佳时容易出现。 在控制台会出现下述语句: Resolver error: Error: XHR failed at y.onerror (vscode-file://vscode-app/…

桥接模式——处理多维度变化

1、简介 1.1、概述 桥接模式是一种很实用的结构型设计模式。如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合单一职责原则。与多层继承方案不同,它将两个独…

游戏APP开发:创新设计的秘诀

在游戏 APP开发中,创新设计是游戏开发公司的一大追求,为了可以为用户带来更好的游戏体验,这就需要对游戏 APP开发进行创新设计。那么,游戏 APP开发中的创新设计是什么呢?接下来,我们就一起来看看吧。 想要…

mongodb docker 及常用命令

MongoDB属于非关系型数据库,它是由C编写的分布式文档数据库。内部使用类似于Json的bson二进制格式。 中文手册 https://www.w3cschool.cn/mongodb/ 安装 https://www.mongodb.com/try/download/community 二进制安装可见另一篇: centos7 mongodb 4.0.28…

基于SpringBoot+Vue驾校理论课模拟考试系统源码(自动化部署)

DrivingTestSimulation Unity3D Project, subject two, simulated driving test 【更新信息】 更新时间-2021-1-17 解决了方向盘不同机型转动轴心偏离 更新时间-2021-2-18 加入了手刹系统 待更新-2021-6-19(工作太忙少有时间更新,先指出问题&#xf…

SSL原理详解

SSL协议结构: SSL协议分为两层,下层为SSL记录协议,上层为SSL握手协议、SSL密码变化协议和SSL警告协议。 1.下层为SSL记录协议,主要作用是为高层协议提供基本的安全服务 建立在可靠的传输之上,负责对上层的数据进行分块…