Java-知识梳理-String-你真的仔细了解过吗

421 阅读5分钟

前言

从概念上讲, Java 字符串就是 Unicode 字符序列。Java 没有内置的字符串类型, 而是在标准 Java 类库中提供了 一个预定义类,很自然地叫做 String。每个用双引号括起来的字符串都是 String类的一个实例。

注意点

1、String是不可变字符串

String 类没有提供用于修改字符串的方法,如何修改这个字符串呢? 在 Java中实现这项操作非常容易。首先提取需要的字符, 然后再拼接上替换的字符串: greeting = greeting.substring(0, 3) + "p!";

2、检测字符串是否相等注意事项

可以使用 equals 方法检测两个字符串是否相等:s.equals(t)。如果字符串 s 与字符串 t 相等, 则返回 true ; 否则, 返回 false。

3、空串与Null串的区别

空串 "" 是长度为 0 的字符串。空串是一个 Java 对象, 有自己的串长度( 0 ) 和内容(空)。不过, String 变量还可以存 放一个特殊的值, 名为 null, 这表示目前没有任何对象与该变量关联。浅显的说就是,空串已经有空间地址,只是内容为空,而Null串指String的对象还未指向空间地址,没有任何东西。

方法解析

• char charAt (int index)

返回给定位置的代码单元。除非对底层的代码单元感兴趣, 否则不需要调用这个方法。

• int codePointAt(int Index)

返回从给定位置开始的码点。

• int offsetByCodePoints(int startlndex, int cpCount)

返回从 startlndex 代码点开始,位移 cpCount 后的码点索引。

• int compareTo(String other)

按照字典顺序,如果字符串位于 other 之前, 返回一个负数;如果字符串位于 other 之 后,返回一个正数;如果两个字符串相等,返回 0。

• IntStream codePoints()

将这个字符串的码点作为一个流返回。调用 toArray 将它们放在一个数组中。

• new String(int[] codePoints, int offset, int count)

用数组中从 offset 开始的 count 个码点构造一个字符串。

• boolean equals(0bject other)

如果字符串与 other 相等, 返回 true。

• boolean equalsIgnoreCase(String other )

如果字符串与 other 相等 ( 忽略大小写,) 返回 tme。

• boolean startsWith(String prefix )
• boolean endsWith(String suffix )

如果字符串以 suffix 开头或结尾, 则返回 true。

• int indexOf(String str)
• int indexOf(String str, int fromlndex )
• int indexOf(int cp)
• int indexOf(int cp, int fromlndex )

返回与字符串 str 或代码点 cp 匹配的第一个子串的开始位置。这个位置从索引 0 或 fromlndex 开始计算。 如果在原始串中不存在 str, 返回 -1。

• int lastIndexOf(String str)
• Int lastIndexOf(String str, int fromlndex )
• int lastindexOf(int cp)
• int lastindexOf(int cp, int fromlndex )

返回与字符串 str 或代码点 cp 匹配的最后一个子串的开始位置。 这个位置从原始串尾端或 fromlndex 开始计算。

• int length( )

返回字符串的长度。

• int codePointCount(int startlndex , int endlndex )

返回 startlndex 和 endludex-1之间的代码点数量。没有配成对的代用字符将计入代码点。

• String replace( CharSequence oldString,CharSequence newString)

返回一个新字符串。这个字符串用 newString 代替原始字符串中所有的 oldString。可 以用 String 或 StringBuilder 对象作为 CharSequence 参数。

• String substring(int beginlndex )
• String substring(int beginlndex, int endlndex )

返回一个新字符串。这个字符串包含原始字符串中从 beginlndex 到串尾或 endlndex-l 的所有代码单元。

• String toLowerCase( )
• String toUpperCase( )

返回一个新字符串。 这个字符串将原始字符串中的大写字母改为小写,或者将原始字 符串中的所有小写字母改成了大写字母。

• String trim( )

返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。

• String join(CharSequence delimiter, CharSequence ... elements )

返回一个新字符串, 用给定的定界符连接所有元素。

构建字符串-StringBuilder

有些时候,需要由较短的字符串构建字符串,例如,按键或来自文件中的单词。采用字符串连接的方式达到此目的效率比较低。每次连接字符串,都会构建一个新的 String 对象,既耗时,又浪费空间。使用 StringBuilder 类就可以避免这个问题的发生。

使用方法

首先, 构 建一个空的字符串构建器:

StringBuilder builder = new StringBuilder();

当每次需要添加一部分内容时, 就调用 append 方法。

builder.append(ch); // appends a single character
builder.append(str); // appends a string

在需要构建字符串时就凋用 toString 方法, 将可以得到一个 String 对象, 其中包含了构建器 中的字符序列。

String completedString = builder.toString();

方法解析-StringBuilder

StringBuilder() 构造一个空的字符串构建器。

int length() 返回构建器或缓冲器中的代码单元数量。

StringBuilder append(Stri ng str) 追加一个字符串并返回 this。

StringBuilder append(char c) 追加一个代码单元并返回 this。

StringBuilder appendCodePoint(int cp) 追加一个代码点,并将其转换为一个或两个代码单元并返回 this。

void setCharAt(int i, char c) 将第 i 个代码单元设置为 c。

StringBuilder insert(int offset, String str) 在 offset 位置插入一个字符串并返回 this。

StringBuilder insert(int offset, Char c) 在 offset 位置插入一个代码单元并返回 this。

StringBuilder delete(int startindex, int endlndex) 删除偏移量从 startindex 到 -endlndex-1 的代码单元并返回 this。

String toString() 返回一个与构建器或缓冲器内容相同的字符