字符串类

String类的特性

  • String类是一个final类,不能被继承
  • String类底层是一个final修饰的字符数组,表示不可变的字符序列(final char value[ ])
  • String的不可变性:当String值改变时,会在常量池中创建新的字符串

字符串-创建

  • 字面量方式创建

    String s1="abc"; // s1存储的是 常量池中"abc"的地址

  • new String( ):保存是 堆空间中的地址值


字符串-拼接原则


String 常用方法

查找

  • 获取长度:

    int length( ):返回字符串的长度: return value.length

  • 获取单个字符

    char charAt(int index): 返回某索引处的字符return value[index]

  • 获取第一次出现的索引位置

    int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
    int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始

  • 获取最后一次出现的索引位置

    int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
    int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。

    注:indexOf和lastIndexOf方法如果未找到 都是 返回-1

判断

  • 是否是空字符串

    boolean isEmpty( ):判断是否是空字符串:return value.length == 0

  • 是否包含子字符串

    boolean contains(CharSequence s)

  • 是否以指定的后缀结束

    boolean endsWith(String suffix):此字符串是否以指定的后缀结束

  • 是否以指定的前缀开始

    startsWith(String prefix):此字符串是否以指定的前缀开始

    startsWith(String prefix, int toffset):从指定索引位置,是否以指定前缀开始

比较

  • 比较内容是否相同

    boolean equals(Object obj):比较两个字符串的内容是否相同

    boolean equalsIgnoreCase(String anotherString):忽略大小写,比较内容是否相同

  • 比较大小

    int compareTo(String anotherString):比较两个字符串的大小

转换

  • 大小写转换

    String toLowerCase( ):转换为小写
    String toUpperCase( ):转换为大写

  • 字符串 转 字符数组char[ ]

    调用toCharArray( )方法

  • 字符串 转 字节数组byte[ ]

    调用getBytes( )方法

功能

  • 去掉前后空白

    String trim( ):返回字符串的副本,忽略前导空白和尾部空白

  • 连接字符串

    String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+”

  • 截取

    String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。
    String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串beginIndex开始截取到endIndex(不包含)的一个子字符串。左闭右开

  • 切割

    String[ ] split(String regex):根据给定正则表达式的匹配拆分此字符串。
    String[ ] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。

  • 替换

    String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
    String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
    String replaceAll(String regex, String replacement): 使 用 给 定 的replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
    String replaceFirst(String regex, String replacement): 使 用 给 定 的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。

  • 匹配正则表达式

    boolean matches(String regex):字符串是否匹配给定的正则表达式


StringBuffer和StringBuilder

StringBuffer扩容原理

  • 字符数组初始的化长度是16
  • 当长度达到16的时候,新的容量是:原长度×2+2
    int newCapacity = (value.length << 1) + 2;
  • 同时调用Arrays.copyOf( )方法,将原数组的元素,复制到新数组中

StringBuffer 常用方法

  • 添加:append( )

  • 删除:delete( )

  • 替换:replace( )

  • 插入:insert( )

  • 查询长度:length( )

  • 查询首次出现的索引位置:indexof(String str)

  • 获取一个字符:charAt( )

  • 修改一个字符:setCharAt( )

  • 字符串反转:reverse( )

  • 截取: substring( )

String、StringBuffer、StringBuilder三者对比

  • Strings是不可变的字符序列,底层是一个final修饰的字符数组。每次改变的时候,在常量池都会创建新的字符串
  • StringBuffer和StringBuilder时可变的字符序列,底层是一个字符数组存储数据。初始化长度是16。当长度达到16时,会扩容为原长度的2倍+2,并且调用Arrays.copyOf( )方法,将原字符数组的元素,复制到新的数组中
  • StringBuilder是线程安全的,StringBuilder是线程不安全的

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

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

相关文章

AI答案之书解来为你解决难题

本文由 ChatMoney团队出品介绍说明 “答案之书智能体”是您贴心的智慧伙伴,随时准备为您解答生活中的种种困惑。无论您在工作中遭遇瓶颈,还是在情感世界里迷失方向,亦或是对个人成长感到迷茫,它都能倾听您的心声,并给予准确且富有启发的回应。 它并非简单地给出答案,而是…

解锁生活密码,AI答案之书解决复杂难题

本文由 ChatMoney团队出品介绍说明 “答案之书智能体”是您贴心的智慧伙伴,随时准备为您解答生活中的种种困惑。无论您在工作中遭遇瓶颈,还是在情感世界里迷失方向,亦或是对个人成长感到迷茫,它都能倾听您的心声,并给予准确且富有启发的回应。 它并非简单地给出答案,而是…

STM32F7外设FMC控制LCD显示屏

STM32F7外设FMC控制LCD显示屏, 显示屏的点阵LCD控制器(Dot Matrix LCD Controller/Driver)是ST7066U。 配置 在CubeMX中选择图 1 根据实际情况选择,Bank几,LCD片选引脚。图 2 FMC原理 对于FMC如何控制LCD,我的理解: FMC能自动发送数据读写RAM,通过FMC读写LCD的显存就可以…

推荐一款好用的golang修复无效json的库:JSONRepair

简单来说,就是可以将错误格式(非标准)的json修正,如下图所示: 我的json明显不是标准的json格式,是不能被解析的: 但是JSONRepair库也能修复。github地址:https://github.com/kaptinlin/jsonrepair 使用也非常简单: 1、安装:go get github.com/kaptinlin/jsonrepair2、…

全志T507-H国产平台Ubuntu系统正式发布,让您的应用开发更便捷!

为了满足广大工业用户的需求,创龙科技针对全志T507-H工业平台进行了Ubuntu系统适配,开发环境如下: Ubuntu:Ubuntu18.04.4 U-Boot:U-Boot-2018.05 Kernel:Linux-4.9.170、Linux-RT-4.9.170 LinuxSDK:LinuxSDK-[版本号].tar.gz (基于全志官方V2.0_20220618)全志T507-H国…

IEC103设备数据 转 IEC61850项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 配置VFBOX网关采集103设备数是 2 5 用IEC61850协议转发数据 4 6 网关使用多个逻辑设备和逻辑节点的方法 6 7 IEC103协议说明 8 8 案例总结 9 1 案例说明设置网关采集IEC103设备数据 把采集的数据转成IEC61850协议转发给…

【触想智能】工业一体机在物流领域上的四大应用分析

随着物流业的快速发展,工业一体机在物流领域上的应用越来越普遍。工业一体机是一种高级智能设备,是多种技术的综合应用,包括机械、电子、计算机、通讯等。在物流行业中,工业一体机可以发挥其先进的技术和功能,提高物流的效率和质量。本文将探讨工业一体机在物流领域上的应…

使用 nuxi upgrade 升级现有nuxt项目版本

title: 使用 nuxi upgrade 升级现有nuxt项目版本 date: 2024/9/10 updated: 2024/9/10 author: cmdragon excerpt: 摘要:本文介绍了如何使用nuxi upgrade命令升级Nuxt 3项目,包括打开终端、运行升级命令、使用选项、测试项目等步骤,以及升级前的注意事项,如备份代码、检查…

[MySQL]为什么主键最好是有序递增的

为什么主键索引最好是有序递增的我们在建表的时候,都会默认将主键索引设置为自增的,具体为什么要这样做呢?又什么好处? InnoDB 创建主键索引默认为聚簇索引,数据被存放在了 B+Tree 的叶子节点上。也就是说,同一个叶子节点内的各个数据是按主键顺序存放的,因此,每当有一…

Oracle 19c OCP 认证考试 082 题库(第18题)- 2024年修正版

【优技教育】Oracle 19c OCP 082题库(Q 18题)- 2024年修正版 考试科目:1Z0-082 考试题量:90 通过分数:60% 考试时间:150min 本文为(CUUG 原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。 原文地址:http://www.cuug.com.cn/ocp/082kaoshitiku/3821954095…