初识String类和String类的拓展

        前言:以下是Java中String类的知识点与一些常见问题和注意事项,如有讲解不妥,请见谅!


目录

1.String类的创建及常见API

(1)String类的四种创建方式:

补充:字符串转化成字符数组 / 字节数组

(2)String类的常见API

2.字符串中的注意事项

 3.StringBuilder  和  StringBuffer  和  StringJoiner

StringBuilder

StringBuffer

 StringJoiner


1.String类的创建及常见API

        先大致了解一下有哪些知识:(如图)

(1)String类的四种创建方式:

1.直接创建:

2.通过对象创建:

3.将字符数组转变成字符串

4.将字节数组转变成字符串

        以上是String类的创建的四种方式,当然有人会问字符数组 / 字节数组可以转化成字符串,那么能不能把字符串转化成字符数组 / 字节数组呢?(当然可以!)

补充:字符串转化成字符数组 / 字节数组

1.字符串转化成字符数组:

2.字符串转化成字节数组:

注:字符串和字节数组的相互转化是ASCII码和字符的相互转换!

(2)String类的常见API

        可以大致看一下常见的API:(如图)

由于如果展开讲解篇幅会过长,详情可以浏览------------------->java中String类常用API-CSDN博客

2.字符串中的注意事项

        大致了解一些有什么:

(1)字符串在内存中储存的注意事项:

        在上面我们已经了解了字符串的创建有四种方式,其中有直接创建(第一种)和通过对象创建(第二种),那么它们有什么区别呢?

        ----直接创建:它是创建一个字符串常量并储存在字符串常量池中的(在堆区)(如图)

        ----通过对象创建的字符串:它是创建了一个字符串对象并存储在了堆区中(如图)

根据上面的两幅图片我们就可以知道直接创建(第一种)和通过对象创建(第二种)的区别了!

 3.StringBuilder  和  StringBuffer  和  StringJoiner

        先来看StringBuilder, 大致了解一些有什么:

StringBuilder

        (1)StringBuilder的介绍:

StringBuilder就是一个存放字符串的容器,你可以把字符串存储在这个容器中,然后通过API 或 其他方式对其中的字符串进行操作。

        (2)StringBuilder的常见API(以下的对象都为sb是因为官方也这么命名

1.append()  ----   作用:向这个容器中添加内容(加在最后)

注:如图可以看到我们可以添加所有基本类型,其实是append()将它们都进行了转化。

2.length()  ----  作用:求容器中的字符串长度

注:别忘记空格也算一个字符哦!

3.reverse()  ----  作用:将容器内的字符串反转

4.toString()  ----  作用:将容器里面的内容转变为字符串格式

从上面几个案例的结果我们是看不出来有什么区别的,但是注意的是,我们创造的对象的类型都是StringBuilder类型的,但是我们要把他变成字符串的格式才能更方便之后的使用。

StringBuffer

        再来看StringBuffer, 大致了解一些有什么:

        (1)StringBuffer的介绍:

StringBuffer就是一个存放字符串的容器,你可以把字符串存储在这个容器中,然后通过API 或 其他方式对其中的字符串进行操作。(其实和StringBuilder一样

它的用法和StringBuilder大差不差,所以也就不在再次解释了,主要讲解一下replace()和delete()

(1)replace()  ----  作业:更换对应的索引范围的内容

注:start索引是包含的,但是end索引是不包含的,及到end - 1的索引位置。

(2)delete()  ----作用:删除对应索引范围的内容

注:start索引是包含的,但是end索引是不包含的,及到end - 1的索引位置。

        当然StringBuilder 和 StringBuffer还有许多其他的常用API ,这里也就不举例了,有兴趣的朋友可以自己上网了解!

        那么有人会问了StringBuilder 和 StringBuffer这么相似,那有什么区别呢?区别还是有的,但是如今还不好解释(等你学习的更多了之后就会知道了,但是这里还是列举一下它们的不同)

        不同:StringBuffer几乎所有的方法都使用synchronized实现了同步,线程比较安全,在多线程系统中可以保证数据同步,但是效率比较低,而StringBuilder 没有实现同步,线程不安全,在多线程系统中不能使用 StringBuilder,但是效率比较高。
 

 StringJoiner

                最后来看StringJoiner, 大致了解一些有什么:

StringJoiner的作用:快速的连接添加到容器里面的内容。

        

        直接看案例吧!

注:在创建对象sj的时候括号里面第一个参数是连接符,第二个参数是开头字符,第三个参数是结尾字符(当然开头和结尾可以省略,只填连接符)

以上就是String有关的一些知识点,希望对你有帮助!!!


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MTK 多帧算法集成实现流程

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、选择feature和配置feature table二、 挂载算法三、自定义metadata四、APP调用算法五、结语 一、选择feature和配置feature table 1.1 选择feature …

C++入门篇(4)—— 类与对象(1)

目录 1.类的引入 2.类的定义 3.类的访问限定符 4.类的作用域 5. 类对象的存储方式 6. this指针 6.1 this指针的引入 6.2 this指针的特性 6.3有意思的面试题 1.类的引入 C语言struct 结构体中只能定义变量,而C中可以定义函数。 struct Date {void Init(int…

Go语言每日一练——链表篇(八)

传送门 牛客面试笔试必刷101题 ----------------两个链表的第一个公共结点 题目以及解析 题目 解题代码及解析 解析 这一道题使用的还是双指针算法,我们先求出两个链表的长度差n,然后定义快慢指针,让快指针先走n步,最后快慢指…

IntelliScraper 更新 --可自定义最大输出和相似度 支持Html的内容相似度匹配

场景 之前我们在使用IntelliScraper 初代版本的时候,不少人和我反馈一个问题,那就是最大输出结果只有50个,而且还带有html内容,不支持自动化,我声明一下,自动化目前不会支持,以后也不会支持&am…

02 数据库管理 数据表管理

文章目录 数据库管理数据表管理基础数据类型表的基本操作 数据库管理 查看已有库 show databases; 创建库 create database 库名 [character set utf8]; e.g. 创建stu数据库,编码为utf8 create database stu character set utf8; create database stu charsetutf8;…

第二十七回 武松威镇安平寨 施恩义夺快活林-人人爱用的Python编程语言

张青提议武松不要去牢城营受苦,可以把公差杀掉然后去二龙山入伙鲁智深。武松却坚持他的道义原则,不愿意伤害一路上照顾他的两位公人。张青尊重他的决定,救醒了两位公人。 张青、孙二娘和武松以及两位公人一起喝酒吃饭,张青还向武…

python+django高校教务选课成绩系统v0143

系统主要实现了以下功能模块: 本课题使用Python语言进行开发。基于web,代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中 使用说明 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并…

leetcode:51.N皇后

起初会想到暴力,但是N不确定,所以不确定for的嵌套层数,所以我们采用回溯算法。 树形结构: 1.树的深度是第depth层 2.树的宽度是对每一行进行遍历 代码实现: 1.result是三维数组,一个棋盘是二维&#x…

KAJIMA CORPORATION CONTEST 2024(AtCoder Beginner Contest 340)ABCDEF 视频讲解

这场比较郁闷,C题短路,连续4次WA,导致罚时太多 A - Arithmetic Progression Problem Statement Print an arithmetic sequence with first term A A A, last term B B B, and common difference D D D. You are only given inputs for w…

蓝桥杯官网练习题(翻转)

问题描述 小蓝用黑白棋的 n 个棋子排成了一行,他在脑海里想象出了一个长度为 n 的 01 串 T,他发现如果把黑棋当做 1,白棋当做 0,这一行棋子也是一个长度为 n 的 01 串 S。 小蓝决定,如果在 S 中发现一个棋子…

英伟达进军定制芯片领域,有望“再造一个Arm”?

隔夜美股AI总龙头英伟达收高3.58%,再创历史新高。该股本周上涨逾9%,今年迄今上涨45.7%。总市值站上1.78万亿美元,逼近亚马逊与谷歌。 消息面上,据媒体报道,据至少九位知情人士透露,英伟达正在建立一个新的业…

微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 目录 前言 通过代码实现限流 定义资源 通过代码定义资源 通过注解方式定义资源 定义限流规则 通过…

4核8g服务器能访问多少人?2024年测评

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线?通用型-4核8G-180G-2000G,2000GB月流量,系统盘为180GB SSD盘,12M公网带宽,下载速度峰值为1536KB/s,即1.5M/秒,假设网站内页平均大小为60KB…

Zabbix6.x配置中文界面 解决乱码问题

Zabbix6.x配置中文界面 解决乱码问题 Zabbix6.x界面无法选择中文,通过安装语言包解决。后面也解决了zabbix6中文方块(乱码)问题。 配置中文语言包 系统中默认没有携带中文语言包,可以通过以下命令查看 localectl list-locales #…

编曲学习:旋律创作基础概念 和弦进行作曲 和弦外音使用 作曲技巧

旋律创作基础概念 和弦进行作曲 和弦外音使用 作曲技巧https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_65be1ba7e4b064a83b92a3d7?course_id=course_2XLKtQnQx9GrQHac7OPmHD9tqbv文档https://app8epdhy0u9502.pc.xiaoe-tech.com/p/t_pc/course_pc_detail/camp_pro/cour…

奇异值分解(SVD)的应用——图像压缩

SVD方法是模型降阶的一类重要方法,本征正交分解(POD)和平衡截断(BT)都属于SVD类方法。 要想深入了解模型降阶技术,我们可以先从SVD的应用入手,做一个直观的了解。 1. SVD的定义和分类 我们想寻找…

nginx添加lua模块

目录 已安装了nginx,后追加lua模块nginx 重新编译知识参考: 从零安装一、首先需要安装必要的库(pcre、zlib、openssl)二、安装LUA环境及相关库 (LuaJIT、ngx_devel_kit、lua-nginx-module)注意:…

「云原生可观测团队」获选「InfoQ 年度技术内容贡献奖」

随着云原生、人工智能逐渐成为各行各业的创新生产力工具。可以预见,我们即将进入全新的智能化时代。随着数据成为新型生产要素,云和 AI 正走向深度融合。云原生通过提供大规模多元算力的高效供给,可观测成为业务创新的核心基础设施&#xff0…

Android---Jetpack Compose学习002

Compose 布局。Compose 布局的目标:1)实现高性能;2)让开发者能够轻松编写自定义布局;3)在 Compose 中,通过避免多次测量布局子级可实现高性能。如果需要进行多次测量,Compose 具有一…

数字孪生:构建未来智慧社区的关键技术

随着科技的快速发展,数字孪生技术作为构建未来智慧社区的关键技术,正逐渐受到广泛关注。数字孪生技术能够实现物理世界与数字世界的交互映射,为智慧社区的建设提供强有力的支持。本文将探讨数字孪生技术在构建未来智慧社区中的作用和意义&…
最新文章