前言
从概念上讲, 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() 返回一个与构建器或缓冲器内容相同的字符