首页 > 其他分享 >字符串类

字符串类

时间:2024-09-10 14:51:55浏览次数:1  
标签:字符 String int 指定 索引 字符串

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是线程不安全的

标签:字符,String,int,指定,索引,字符串
From: https://www.cnblogs.com/meitianyouheng/p/18406388

相关文章

  • 1170. 比较字符串最小字母出现频次
    题目链接1170.比较字符串最小字母出现频次思路题意不易理解;排序+二分(upper_bound)题解链接Python简洁解法关键点预先处理words时间复杂度\(O((n+m)p)\)空间复杂度\(O(1)\)代码实现:classSolution:defnumSmallerByFrequency(self,queries:L......
  • 每日OJ_牛客_单词倒排(字符串模拟)
    目录牛客_单词倒排(字符串模拟)解析代码牛客_单词倒排(字符串模拟)单词倒排__牛客网时间限制:C/C++1秒,其他语言2秒空间限制:C/C++32M,其他语言64M题目描述:对字符串中的所有单词进行倒排。说明:1、构成单词的字符只有26个大写或小写英文字母;2、非构成单词的字符均视为单词......
  • 代码随想录day8-字符串2
    题目1151.反转字符串中的单词*给你一个字符串s,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾......
  • 华为OD机试真题-字符串化繁为简-2024年OD统一考试(E卷)
    题目描述给定一个输入字符串Q,字符串只可能由英文字母('a'~''、'^'~'')和左右小括号('、”')组成。当字符里存在小括号时,小括号是成对的,可以有一个或多个小括号对,小括号对不会嵌套,小括号对内可以包含1个或多个英文字母9,也可以不包含英文字母。当小括号对内包含多个英文字......
  • Java----字符串(String)
    一、什么是字符串?定义:字符串是一个或多个字符的序列在java中用char数组来表示字符串,我们可以从源码看到:java对char数组进行了封装,并用String类型来表达字符串,也就是说java程序中所有字符串的文字都被成为此类的对象。#java8源码/**Thevalueisusedforcharacterst......
  • 16.函数--字符串函数
    常用函数:|函数|功能||--------------------------------|--------------------------------||CONCAT(s1,s2,…,sn)|字符串拼接,将s1,s2,…,sn拼接成一个字符串||LOWER(str)......
  • 代码随想录训练营 Day53打卡 图论part04 110. 字符串接龙 105. 有向图的完全可达性 10
    代码随想录训练营Day53打卡图论part04一、卡码110.字符串接龙本题与力扣127题是一样的,所以这里使用力扣127题。字典wordList中从单词beginWord到endWord的转换序列是一个按下述规格形成的序列beginWord->s1->s2->…->sk:    每一对相邻的单词只......
  • Day07 字符串part01| LeetCode 344. 反转字符串,541. 反转字符串II,卡码网:54.替换数字
    反转字符串344.反转字符串classSolution{publicvoidreverseString(char[]s){intlens=s.length;intright,left;if(lens%2!=0)//奇数个{right=lens/2+1;left=lens/2-1......
  • C++字符串中的string类操作
    愿我如星君如月,夜夜流光相皎洁。                           ——《车逍遥篇》【宋】范成大目录正文:主要特点:基本操作: 代码演示:总结:今天我们接着上次的章节继续,这次我们来说一个为解决上个方法的缺陷而诞生......
  • 图论篇--代码随想录算法训练营第五十三天打卡| 110. 字符串接龙,105.有向图的完全可达
    110.字符串接龙题目链接:110.字符串接龙题目描述:字典strList中从字符串beginStr和endStr的转换序列是一个按下述规格形成的序列: 序列中第一个字符串是beginStr。序列中最后一个字符串是endStr。 每次转换只能改变一个字符。 转换过程中的中间字符串必须是字典......