Java入门之String学习随记(二)

news2024/10/7 13:13:59

一. 字符串的常用方法

public char charAt(int index)        根据索引返回字符

public int length()                         返回字符串的长度

注意:获得字符串的长度和获得数组的长度不同,数组的长度是数组的属性

数组名.length()        属性

字符串.length()        方法

二. StringBuilder

1.一个字符串容器,里面的内容是可以被改变的

构造方法:StringBuilder()-空参构造

                StringBuilder(String)-有参构造,后续添加字符串都将接在String后面

2.几个常用的方法

public StringBuilder append()        添加数据,并返回对象本身

public StringBuilder reverse()        反转容器内容

public int length()                           返回容器内字符出现的个数

public String toString()                   通过该方法可以将StringBuilder转化为String

三. 实操

1. 创建一个StringBuilder

StringBuilder sb = new StringBuilder();

StringBuilder sb2 = new StringBuilder("abc");

2. 给已有对象添加内容

sb.append("ab");

sb.append(6);

3. 反转内容(该方法也论证了StringBuilder的内容是可以进行更改的,不同于String)

sb.reverse();

4. 获取长度

int len = sb.length();

5.转化为字符串

String s = sb.toString();

四. 练习

由键盘录入一个字符串,判断该字符串是否为对称字符串

        

 五. 衍生-StringJoiner

可以通过入参来指定格式的容器

// 创建一个容器,只指定间隔符

StringJoiner sj = new StringJoiner("---");

// 创建一个容器,指定间隔符,开始和结束符号

StringJoiner sj2 = new StringJoiner("---", "[","]");

// 向容器内添加数据,StringJoiner是用单词add命名方法做区分

sj2.add("sb");

// 查看容器内字符的个数

int len = sj2.lengh();

// 转化为String

sj2.toString();

总结:由此可见,StringJoiner更适合标准化拼接,StringBuilder的灵活性更强,根据场景可以自行选择

六. String拼接的底层原理和拼接优化

如:String s1 = "a";

     String s2 = "b";

     String s3 = "c";

想要将三个字符串拼接起来,如果使用"+"进行拼接的话

String result = s1 + s2 + s3;

在底层,会先创建一个StringBuilder,将s1和s2加载进去完成拼接,再调用toString方法,创建一个String对象;再创建一个新的StringBuilder,将拼接好的String对象和s3加载进去完成拼接,再调用toString方法,最后创建一个String对象,为最终结果.

但是,由上可知,整个过程创建了两个StringBuilder和两个String对象,浪费空间而且花费时间.

所以在有标识符参与拼接的情况下,推荐直接使用StringBuilder来完成拼接,而不是用"+".

扩展:StringBuilder的容量是不会被冲爆的,默认容量是16,如果超了,会扩展为*2+2,如果再超了,会扩展为实际的容量,变得弹性化.

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

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

相关文章

通知神器——java调用钉钉群自定义机器人----Jay

其中webhook非常重要,下文详述。点击设置说明可以看相关使用文档,文档链接见本文末尾 创建群自定义机器人 其中webhook非常重要,下文详述。点击设置说明可以看相关使用文档,文档链接见本文末尾 使用HTTP POST请求发送消息…

如何从linux社区下载和合入内核patch?

参考 git - How do I get a linux kernel patch set from the mailing list? - Unix & Linux Stack Exchangehttps://unix.stackexchange.com/questions/80519/how-do-i-get-a-linux-kernel-patch-set-from-the-mailing-list 方法 发现使用b4这个工具非常合适。 下面是…

【MySQL】数据库的查询语言DQL

目录 前言: 一.基本查询 1.1查询多个字段 1.2设置别名 1.3去除字段中重复的值 二.条件查询 2.1条件的种类 2.1.1比较运算符 2.1.2逻辑运算符 三.结尾 前言: 在前面讲完了如何增删改数据表中的记录后,那么如何使用这些数据就成了另一…

chatgpt赋能python:Python如何加断点

Python如何加断点 什么是断点 在程序执行时,开发人员可以设置断点,使得程序在断点处暂停执行,从而方便调试程序。当程序停在断点处时,可以查看变量的值、执行语句等,以找出程序中的错误。 Python加断点的方法 在Py…

chatgpt赋能python:Python中的元组及其自身的特性说明

Python 中的元组及其自身的特性说明 在 Python 中,元组是一组有序的值,可以存储各种不同类型的数据。与列表不同的是,元组是不可变的,一旦创建就不能修改。由于元组不可更改,因此它们的值在创建后是固定的。 由于元组…

C语言之预处理那点事

文章目录 一、程序的翻译和执行环境二、预定义符号的介绍1.预定义符号2.#define3.宏和函数的比较4.条件编译 总结 在C语言中,曾出现各种各样新的标准,有的昙花一现,有的则源远流传。我们这篇来看流传下来的,简化开发者编程和提升性…

FFmpeg音视频处理工具介绍及应用

1 FFmpeg介绍 FFmpeg项目由 Fabrice Bellard在2000年创立。到目前为止,FFmpeg项目的开发者仍然与VLC、MPV、dav1d、x264等多媒体开源项目有着广泛的重叠。Ffmpeg(FastForward Mpeg)是一款遵循GPL的开源软件,在音视频处理方面表现…

算法刷题-数组-移除元素

27. 移除元素 力扣题目链接 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需…

chatgpt赋能python:Python如何编写优化SEO的软件

Python如何编写优化SEO的软件 作为一种功能强大且易于学习的编程语言,Python已经成为广泛使用的开发工具之一,其用户群体涵盖从初学者到专业开发人员。然而,在Python编写SEO相关软件时,开发人员需要遵循一些最佳实践,…

chatgpt赋能python:Python中如何加空格

Python中如何加空格 Python是一门广泛应用于科学计算、数据分析、人工智能、Web开发等领域的高级编程语言。在Python编程过程中,经常需要使用到空格,以实现程序的格式化和美观,同时也有助于提高代码的可读性和可维护性。本文主要介绍Python中…

人工蜂群算法(Artificial Bee Colony (ABC) Algorithm,附简单案例及详细matlab源码)

作者:非妃是公主 专栏:《智能优化算法》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录 专栏推荐一、人工蜂群算法二、伪代码三…

前端vue地图定位并测算当前定位离目标位置距离

前端vue地图定位并测算当前定位离目标位置距离, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id12974 效果图如下: # #### 使用方法 使用方法 <!-- // 腾讯地图key注册地址&#xff08;针对H5端&#xff0c;manifest.json中web配置&…

【力扣刷题 | 第六天】

目录 前言&#xff1a; 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; 541. 反转字符串 II - 力扣&#xff08;LeetCode&#xff09; 今天我们进入字符串章节的刷题旅程&#xff0c;希望各位小伙伴可以和我一起坚持下去&#xff0c;一起征服力扣&#xff01; 前言…

chatgpt赋能python:Python如何删除列表中的重复数据

Python如何删除列表中的重复数据 介绍 Python是一种高级编程语言&#xff0c;可用于开发各种类型的应用程序&#xff0c;包括网站&#xff0c;桌面应用程序&#xff0c;数据分析和机器学习。在Python编程中&#xff0c;经常需要对列表中的数据进行操作。有时候&#xff0c;我…

【读书笔记】《蛤蟆先生去看心理医生》- [英] 罗伯特·戴博德

文章目录 第一章 整个人都不太好第二章 挚友前来相助第三章 初见咨询师第四章 抑郁的原因第五章 成长的寓言第六章 探索童年第七章 愤怒的表现第八章 意外访客第九章 秘密协议第十章 午餐聚会第十一章 蛤蟆先生的选择第十二章 说出人生故事第十三章 人生坐标与心理游戏第十四章…

动态规划II (42、53、64、70、72)

CP42 接雨水 题目描述&#xff1a; 学习记录&#xff1a; 虽然脑子里第一个蹦出双指针&#xff0c;但是题目是动态规划&#xff0c;两个混着想&#xff0c;啥也没想出来...不会 1.动态规划&#xff1a;太牛了吧&#xff0c;这个不是从整体去考虑每一块该怎么填&#xff0c;而…

Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C++)

Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差&#xff08;C&#xff09; Baumer工业相机Baumer工业相机BGAPI SDK和图像时间戳的技术背景Baumer工业相机使用BGAPISDK控制相机数据流的方式1.引用合适的类文件2.使用BGAPISDK获取时间戳的方…

动态规划I (45、55、62、63)

按顺序刷确实效率太低了&#xff0c;今天开始要按顺序的同时也按标题来了&#xff0c;全面加油&#xff01;这种应该以后会更多直接总结题解了&#xff0c;自我学习用&#xff0c;全靠大佬&#xff0c;贴贴&#xff01;&#xff01;含45、55、62、63 CP55 跳跃游戏 题目描述&…

【浅谈DBA职业生涯---误操作篇】

&#x1f448;【上一篇】 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 【下一篇】&#x1f449; &#x1f53b;【&#x1f4a3; 话题引入&#xff1a;请列举你在从事 DBA 生涯中,最难以忘怀的一次误操作】 &#x1f6a9; 该话题覆盖…

MapReduce共享单车练习

MapReduce 本机运行 文章目录 MapReduce 本机运行✅前置工作1. 配置JDK2. 创建Java项目3. 导入所需JAR包 编程实现以下题目1. 统计各个月份共享单车使用的总数2. 统计不同天气情况下共享单车使用的总数3. 统计每个季度共享单车使用的总数4. 统计每个月份的注册数量5. 统计每天1…