String 类的方法查询

Unicode 码点

Unicode 码点(Unicode code point)是 Unicode 字符集中的一个唯一标识符,用于表示一个字符。每个字符在 Unicode 标准中都有一个唯一的整数值,这个值被称为 Unicode 码点。

Unicode 码点是用一个整数来表示的,通常写作 U+ 后跟一个十六进制的数值。

Unicode 码点的结构

Unicode 码点的值范围从 U+0000U+10FFFF,共计 1,114,112 个可能的码点。

Unicode 码点的分类:
  1. 基本多文种平面(BMP,Basic Multilingual Plane)

    • 这是 Unicode 标准的第一个平面,包含了常用的字符(如拉丁字母、汉字、标点符号等),其码点范围是从 U+0000U+FFFF(即 0 到 65,535)。
    • 例如,U+0041 对应字符 'A'U+4E2D 对应汉字 '中'
  2. 辅助平面(Supplementary Planes)

    • 除了 BMP 外,Unicode 还定义了其他的平面(补充平面),其码点范围是从 U+010000U+10FFFF。这些平面主要用于包括表情符号、历史文字、数学符号等。
    • 例如,U+1F600 对应表情符号 😀,属于辅助平面。

码点和字符的关系

Unicode 码点与字符的关系是:每个 Unicode 码点表示一个字符。然而,一个字符在内存中的存储方式与码点的表示方式有区别,特别是在处理多字节字符(如辅助平面的字符)时。

  • 基本字符:对于 BMP 中的字符(即 U+0000U+FFFF 范围的字符),通常一个 Unicode 码点可以直接映射到一个字符。
  • 代理对字符:对于辅助平面中的字符(例如表情符号),一个字符可能由 两个 16 位的字符单元(称为代理对)表示。这是因为 Java 中的 char 类型是 16 位的,而某些字符(如表情符号)需要超过 16 位的存储空间。

Unicode 码点与编码

  • UTF-8:一种变长编码方式,通常用于存储和传输 Unicode 字符。对于 BMP 范围的字符(U+0000U+FFFF),UTF-8 使用 1 到 3 个字节表示。而对于辅助平面字符,UTF-8 使用 4 个字节。
  • UTF-16:一种固定或变长编码方式,广泛用于内存中的字符表示。Java 使用 UTF-16 来表示字符。对于 BMP 中的字符,UTF-16 使用 2 个字节表示;对于辅助平面字符,UTF-16 使用两个 char(16 位)单位表示(称为代理对)。
  • UTF-32:使用 4 个字节表示一个 Unicode 码点。

总结:

  • Unicode 码点 是一个用于表示字符的唯一标识符。每个 Unicode 字符都有一个唯一的码点,通常表示为 U+ 后跟一个十六进制数。
  • 它使得不同语言和符号可以在全球范围内标准化,方便跨平台的字符处理。
  • Unicode 码点通过编码格式(如 UTF-8、UTF-16、UTF-32)存储和传输,在 Java 中可以通过 int[] 数组处理这些码点。

String 类的方法

索引从 0 开始

如果 索引 小于 0 或大于等于字符串的长度,方法会抛出 StringIndexOutOfBoundsException 异常

空字符串 ("") 是一个特殊的字符串,它被认为是存在于所有字符串的任意位置,包括开头、结尾、以及每个字符之间的位置。

ch:要查找的字符。它是一个整数,表示字符的 Unicode 值。

返回类型方法说明
charcharAt(int index)返回指定索引位置的字符
intindexOf(int ch)返回指定字符ch在字符串中第一次出现的位置(索引),如果字符不存在于字符串中,返回 -1
intindexOf(int ch, int fromIndex)返回字符 ch 在字符串中从指定的索引位置fromIndex开始第一次出现的位置(索引),如果字符不存在于字符串中或fromIndex 大于等于字符串的长度,返回 -1
intindexOf(String str)该方法返回子字符串在字符串中首次出现的索引,如果没有找到子字符串,返回 -1
intindexOf(String str, int fromIndex)返回子字符串 str  在字符串中从指定的索引位置fromIndex开始第一次出现的位置(索引),如果子字符串不存在于字符串中或fromIndex 大于等于字符串的长度,返回 -1。
intlastIndexOf(int ch)从后往前找,返回字符 ch 在字符串中第一次出现的位置,如果字符不存在于字符串中,返回 -1
intlastIndexOf(int ch, int fromIndex)从后往前找,返回字符 ch 在字符串中从指定的索引位置fromIndex开始第一次出现的位置(索引),如果字符不存在于字符串中,返回 -1。如果fromIndex 大于等于字符串的长度,方法会将 fromIndex 限制为字符串的最后一个有效索引位置( str.length() - 1)。即查找会从字符串的最后一个字符开始从后往前找。
intlastIndexOf(String str)从后往前找,返回子字符串 str  在字符串中从指定的索引位置fromIndex开始第一次出现的位置(索引),如果子字符串不存在于字符串中或fromIndex 大于等于字符串的长度,返回 -1。
intlastIndexOf(String str, int fromIndex)从后往前找,返回子字符串 str  在字符串中从指定的索引位置fromIndex开始第一次出现的位置(索引),如果子字符串不存在于字符串中,返回 -1。如果fromIndex 大于等于字符串的长度,方法会将 fromIndex 限制为字符串的最后一个有效索引位置( str.length() - 1)。即查找会从字符串的最后一个字符开始从后往前找。
intcodePointAt(int index)返回指定索引位置的字符的Unicode 代码点
intcodePointBefore(int index)返回指定索引位置的前一个字符的Unicode 代码点
intcodePointCount(int beginIndex, int endIndex)计算字符串中指定范围 [beginIndex , endIndex)(前闭后开内的 Unicode 码点数
intcompareTo(String anotherString)按字典顺序比较两个字符串。
intcompareToIgnoreCase(String str)按字典顺序比较两个字符串,忽略大小写差异
Stringconcat(String str)将指定字符串连接到该字符的末尾
booleancontains(CharSequence s)判断当前字符串是否包含指定的子字符串
booleancontentEquals(CharSequence cs)比较当前字符串与指定的 CharSequence 对象的内容是否相同,不同于 equals() 方法,contentEquals() 用于比较字符串的字符内容,而不关心它们是否是同一类型的对象
booleanequals(Object anObject)默认情况下,equals() 方法比较的是对象的引用地址,但是, String类重写 equals() 方法,使其基于对象的内容来进行比较
booleancontentEquals(StringBuffer sb)检查 StringStringBuffer 中的字符序列是否完全一致
booleanendsWith(String suffix)检查字符串是否以指定的后缀(suffix)结尾,如果传入的 suffix空字符串 "",则返回 true
booleanequalsIgnoreCase(String anotherString)用于比较当前字符串与指定字符串 anotherString 是否相等,忽略大小写差异
byte[]getBytes()将字符串转换为字节数组
byte[]getBytes(Charset charset)将字符串转换为字节数组,使用指定的字符集(Charset 进行编码
byte[]getBytes(String charsetName)将字符串转换为字节数组,并使用指定的字符集进行编码
voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)将该字符串中指定范围 [srcBegin ,srcEnd)(前闭后开)内的字符复制到从 dstBegin 位置开始的 dst 字符数组中,
inthashCode()根据字符串的内容计算哈希码,重写了 Object 类中的 hashCode() 方法
Stringintern()将字符串对象加入到字符串常量池(string pool)中,返回该字符串的引用
booleanisEmpty()判断字符串是否为空,为空 "" ,则返回true,否则返回false
intlength()用于获取字符串的长度(字符个数,包括空格和特殊字符)。

空字符串 "" 的长度为 0。如果字符串为 null,调用 length() 会抛出 NullPointerException

booleanmatches(String regex)

判断当前字符串是否完全匹配指定的正则表达式regex。

intoffsetByCodePoints(int index, int codePointOffset)字符串从 index 位置起偏移codePointOffset个 Unicode 编码点,返回字符串中偏移后的字符位置。codePointOffset 可以是正数也可以是负数。适用于处理包含多字节字符(如表情符号、非 ASCII 字符等)的字符串,可以避免由于字符占用不同字节数而导致的索引错误
booleanregionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

比较两个字符串中指定位置的子字符串(区域)是否相等。

  • ignoreCase:一个布尔值,指是否忽略大小写。如果为 true,则比较时忽略大小写;如果为 false,则比较时考虑大小写。
  • toffset:目标字符串(this 字符串)中开始比较的字符位置
  • other:另一个 String 对象,用于与目标字符串的指定区域进行比较。
  • ooffsetother 字符串中开始比较的字符位置
  • len:要比较的字符数,表示目标字符串和 other 字符串中各自的子字符串的长度。
booleanregionMatches(int toffset, String other, int ooffset, int len)比较两个字符串中指定位置的子字符串(区域)是否相等。
Stringreplace(char oldChar, char newChar)将字符串中所有的 oldChar 字符替换为 newChar字符,并返回一个新的被替换后的字符串
Stringreplace(CharSequence target, CharSequence replacement)将字符串中所有与 target 相等的子字符串替换为 replacement,并返回一个新的被替换后的字符串
StringreplaceAll(String regex, String replacement)将字符串中所有与正则表达式 regex 匹配的子字符串替换为 replacement,并返回一个新的被替换后的字符串。
StringreplaceFirst(String regex, String replacement)用于替换第一个与正则表达式 regex 匹配的子字符串,其他匹配的部分保持不变,并返回一个新的被替换后的字符串。
String[]split(String regex)根据给定的正则表达式regex(表示分隔符)将字符串分割成多个子字符串,并返回一个字符串数组
String[]split(String regex, int limit)

根据给定的正则表达式regex(表示分隔符)将字符串分割成多个子字符串,并返回一个字符串数组。limit 限制返回的数组的大小(即最多分割的次数)。

  • 如果 limit > 0,最多将字符串分割成 limit 个部分,超过的部分会合并到最后一个子字符串。
  • 如果 limit <= 0,会无限制地分割字符串,直到无法再分割,空的子字符串也会被包含。
booleanstartsWith(String prefix)用于检查字符串是否以指定的前缀字符串 prefix 开始
booleanstartsWith(String prefix, int toffset)

用于检查从字符串的指定索引位置 toffet 开始,是否以指定的前缀字符串 prefix 开始

Stringsubstring(int beginIndex)用于提取字符串的子字符串。它从指定的位置 beginIndex 开始,一直到字符串的末尾,返回一个新的字符串。
Stringsubstring(int beginIndex, int endIndex)用于从一个字符串中提取指定范围 [ beginIndex , endIndex )(前闭后开)的子字符串,返回一个新的字符串。 
CharSequencesubSequence(int beginIndex, int endIndex)用于从一个字符序列中提取指定范围 [ beginIndex , endIndex )(前闭后开)的子序列,返回一个新的 CharSequence字符序列
char[]toCharArray()将一个字符串转换为一个字符数组(char[]
StringtoLowerCase()将字符串中的所有大写字母转换为小写字母
StringtoLowerCase(Locale locale)跟据指定的区域设置(Locale)将字符串中的所有大写字母转换为小写字母
StringtoUpperCase()将字符串中的所有小写字母转换为大写字母
StringtoUpperCase(Locale locale)跟据指定的区域设置(Locale)将字符串中的所有小写字母转换为大写字母
Stringtrim()用于去除字符串开头和结尾处所有的空白字符(包括空格、制表符 \t 、换行符 \n、回车符 \r 等),中间的空白字符保持不变。返回一个新的字符串。
StringtoString()返回字符串对象本身的内容,重写了Object 类中的toString方法

静态方法

静态方法可以通过类名来调用,不需要创建一个新的String对象

修饰限定符和返回类型 :public static String 

静态方法说明
copyValueOf(char[] data)用于将字符数组 data 转换为一个新的字符串
copyValueOf(char[] data, int offset, int count)在指定的字符数组 data 中,从 offset 开始,读取 count个字符,并将这些字符转换为一个新的字符串
format(Locale l, String format, Object... args)根据指定的 区域设置(Locale) 格式化字符串,format 格式化字符串,定义输出的格式,args 需要格式化的数据对象
format(String format, Object... args)根据指定的格式化字符串对数据进行格式化
join(CharSequence delimiter, CharSequence... elements)将多个 CharSequence 元素连接成一个单一的字符串,并通过指定的分隔符delimiter 分隔每个元素。elements:一个可变参数,表示要连接的多个 CharSequence 元素
join(CharSequence delimiter, Iterable<? extends CharSequence> elements)将一个实现了 Iterable 接口的集合中的元素连接成一个字符串,并通过指定的分隔符delimiter 分隔每个元素。elements:一个 Iterable<? extends CharSequence> 类型的集合,表示要连接的多个 CharSequence 元素。Iterable 是一个接口,常见的实现类包括 ListSet 等。
valueOf(boolean b)将一个 boolean 值转换为对应的字符串表示形式
valueOf(char c)将一个 char(字符)转换为字符串
valueOf(char[] data)将一个字符数组(char[])转换为一个新的字符串
valueOf(char[] data, int offset, int count)将字符数组 data 中从指定位置 offset 开始的连续 count 个字符转换为一个新的字符串
valueOf(double/float d)

将一个 double/float 类型的数值转换为对应的字符串。

  • 对于 NaN,返回 "NaN"
  • 对于 Infinity,正无穷大返回 "Infinity",负无穷大 返回 "-Infinity"。
valueOf(int/long i)将一个 int/long 类型的数值转换为对应的字符串。
valueOf(Object obj)

将一个对象转换为字符串

  • 如果对象为 null,返回 "null"
  • 如果对象不为 null,调用对象的 toString() 方法来获取其字符串表示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值