String类基本知识
String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例。 字符串是不变的; 它们的值在创建后无法更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,所以可以共享它们。 例如:
String str = "abc";
相当于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
Java语言为字符串连接运算符(+)提供特殊支持,并提供为其他对象转换为字符串或者是提供有关字符串连接和转换的其他信息。简单来说,Sting类支持连接运算符(+)的连接,而且可以为其他对象比如说Char类型的变量转换成为String类提供简单有效的API。
使用样例
System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);
java的String类的作用
1、用于检查序列的各个字符
2、用于比较字符串
3、用于搜索字符串
4、用于提取子字符串
5、用于创建具有被翻译为大写或小写的所有字符的字符串的副本的方法。
String的构造方法和用途
public String() :初始化新创建的String对象,使其表示空字符序列
。 请注意,由于字符串是不可变的,因此不必使用此构造函数。
public String(String original): 初始化新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本。
除非需要original的显式副本, original不必使用此构造函数,因为字符串是不可变的。
public String(char[] value) :分配新的String
,使其表示当前包含在字符数组参数中的字符序列。 复制字符数组的内容; 后续修改字符数组不会影响新创建的字符串。
参数 :value - 字符串的初始值
public String(char[] value, int offset, int count): 分配一个新的String
,其中包含字符数组参数的子数组中的字符。 offset参数是子count的第一个字符的索引, count参数指定子count的长度。
复制子阵列的内容; 后续修改字符数组不会影响新创建的字符串。
参数 :
value - 作为字符源的数组
offset - 初始偏移量
count - 长度
异常 : IndexOutOfBoundsException - 如果 offset为负数,则 count为负数,或 offset为大于 value.length - count
public String(int[] codePoints, int offset,int count): 分配一个新的String ,其中包含Unicode code point数组参数的子数组中的字符。
offset参数是子count的第一个代码点的索引, count参数指定子count的长度。 子阵列的内容转换为char s; 后续修改int数组不会影响新创建的字符串。
参数 :
codePoints - 作为Unicode代码点源的数组
offset - 初始偏移量
count - 长度
public String(byte[] bytes, int offset, int length, Charset charset): 构造一个新的String通过使用指定的指定字节子阵列解码charset
。 新String的长度是字符集的函数,因此可能不等于子String的长度。 此方法始终使用此charset的默认替换字符串替换格式错误的输入和不可映射字符序列。 当需要更多地控制解码过程时,应使用CharsetDecoder类。
参数 :
bytes - 要解码为字符的字节
offset - 要解码的第一个字节的索引
length - 要解码的字节数
charset -该charset被用来解码bytes
public String(StringBuffer buffer): 分配一个新字符串
,其中包含当前包含在字符串缓冲区参数中的字符序列。 复制字符串缓冲区的内容; 后续修改字符串缓冲区不会影响新创建的字符串。
public String(StringBuilder builder) 分配一个新字符串
,其中包含当前包含在字符串构建器参数中的字符序列。 字符串生成器的内容被复制; 后续修改字符串生成器不会影响新创建的字符串。 提供此构造函数是为了便于迁移到StringBuilder
。 通过toString方法从字符串生成器获取字符串可能运行得更快,通常是首选
。
String类的API方法
(目前我已经遇到的常用的API已经标记)
char charAt(int index): 返回指定索引处的 char值。
IntStream chars(): 返回 int的流,将此序列中的 char值零扩展。
int codePointAt(int index): 返回指定索引处的字符(Unicode代码点)。
int codePointBefore(int index) : 返回指定索引之前的字符(Unicode代码点)。
int codePointCount(int beginIndex, int endIndex) : 返回此 String的指定文本范围内的Unicode代码点数。
IntStream codePoints(): 返回此序列中的代码点值流。
int compareTo(String anotherString) : 按字典顺序比较两个字符串。
int compareToIgnoreCase(String str) : 按字典顺序比较两个字符串,忽略大小写差异。
String concat(String str): 将指定的字符串连接到此字符串的末尾
。
boolean contains(CharSequence s) : 当且仅当此字符串包含指定的char值序列时,才返回true。
boolean contentEquals(CharSequence cs) : 将此字符串与指定的 CharSequence 。
boolean contentEquals(StringBuffer sb): 将此字符串与指定的 StringBuffer 。
static String copyValueOf(char[] data) : 相当于 valueOf(char[]) 。
static String copyValueOf(char[] data, int offset, int count) : 相当于 valueOf(char[], int, int) 。
boolean endsWith(String suffix) : 测试此字符串是否以指定的后缀结尾。
boolean equals(Object anObject) : 将此字符串与指定的对象进行比较。
boolean equalsIgnoreCase(String anotherString): 将此 String与另一个 String比较,忽略了大小写。
static String format(String format, Object… args) : 使用指定的格式字符串和参数返回格式化字符串。
static String format(Locale l, String format, Object… args): 使用指定的语言环境,格式字符串和参数返回格式化的字符串。
byte[] getBytes() : 使用平台的默认字符集将此 String编码为字节序列,将结果存储到新的字节数组中。
void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin) : 已过时
。 此方法无法将字符正确转换为字节。
byte[] getBytes(String charsetName) : 使用命名的字符集将此 String编码为字节序列,将结果存储到新的字节数组中。
byte[] getBytes(Charset charset) : 使用给定的charset将此String编码为字节序列,将结果存储到新的字节数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin): 将此字符串中的字符复制到目标字符数组中。
int hashCode(): 返回此字符串的哈希码。
int indexOf(int ch) : 返回指定字符第一次出现的字符串中的索引。
int indexOf(int ch, int fromIndex) : 返回指定字符第一次出现的此字符串中的索引,从指定索引处开始搜索。
int indexOf(String str) : 返回指定子字符串第一次出现的字符串中的索引。
int indexOf(String str, int fromIndex) : 从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引。
String intern() : 返回字符串对象的规范表示。
boolean isBlank() : 如果字符串为空或仅包含 white space代码点,则返回 true ,否则 false 。
boolean isEmpty() :返回 true ,当且仅当, length()是 0 。
static String join(CharSequence delimiter, CharSequence… elements) : 返回由 CharSequence elements的副本组成的新String,
该副本与指定的 delimiter的副本连接在一起。
static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements) : 返回由 String的副本组成的新 String ,其中 CharSequence elements指定的 delimiter的副本。
int lastIndexOf(int ch) : 返回指定字符最后一次出现的字符串中的索引。
int lastIndexOf(int ch, int fromIndex) : 返回指定字符最后一次出现的字符串中的索引,从指定的索引开始向后搜索。
int lastIndexOf(String str) : 返回指定子字符串最后一次出现的字符串中的索引。
int lastIndexOf(String str, int fromIndex) : 返回指定子字符串最后一次出现的字符串中的索引,从指定索引开始向后搜索
。
int length() : 返回此字符串的长度。
Stream lines() : 返回从此字符串中提取的行的流,由行终止符分隔。
boolean matches(String regex) :判断此字符串是否与给定的 regular expression匹配。
int offsetByCodePoints(int index, int codePointOffset) : 返回此 String中的索引,该索引从给定的 index偏移 codePointOffset代码点。
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len): 测试两个字符串区域是否相等。
boolean regionMatches(int toffset, String other, int ooffset, int len) : 测试两个字符串区域是否相等。
String repeat(int count) : 返回一个字符串,其值为此字符串的串联重复 count次。
String replace(char oldChar, char newChar) : 返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 。
String replace(CharSequence target, CharSequence replacement) : 将此字符串中与文字目标序列匹配的每个子字符串替换为指定的文字替换序列。
String replaceAll(String regex, String replacement) : 将给定替换的给定 regular expression匹配的此字符串的每个子字符串替换。
String replaceFirst(String regex, String replacement): 将给定替换的给定 regular expression匹配的此字符串的第一个子字符串替换。
String[] split(String regex) : 将此字符串拆分为给定 regular expression的匹配项 。
String[] split(String regex, int limit) : 将此字符串拆分为给定 regular expression的匹配项 。
boolean startsWith(String prefix): 测试此字符串是否以指定的前缀开头。
boolean startsWith(String prefix, int toffset) : 测试从指定索引开始的此字符串的子字符串是否以指定的前缀开头。
String strip() : 返回一个字符串,其值为此字符串,并删除了所有前导和尾随 white space 。
String stripLeading() : 返回一个字符串,其值为此字符串,并删除了所有前导 white space 。
String stripTrailing(): 返回一个字符串,其值为此字符串,并删除所有尾随 white space 。
CharSequence subSequence(int beginIndex, int endIndex): 返回作为此序列的子序列的字符序列。
String substring(int beginIndex) : 返回一个字符串,该字符串是此字符串的子字符串。
String substring(int beginIndex, int endIndex): 返回一个字符串,该字符串是此字符串的子字符串。
char[] toCharArray() : 将此字符串转换为新的字符数组。
String toLowerCase() : 使用默认语言环境的规则将此 String所有字符转换为小写。
String toLowerCase(Locale locale) : 使用给定 Locale的规则将此 String所有字符转换为 Locale 。
String toString() : 这个对象(已经是一个字符串!)
String toUpperCase() : 使用默认语言环境的规则将此 String所有字符转换为大写。
String toUpperCase(Locale locale): 使用给定 Locale的规则将此 String所有字符转换为大写。
String trim() : 返回一个字符串,其值为此字符串,删除了所有前导和尾随空格
,其中space被定义为其代码点小于或等于 ‘U+0020’ (空格字符)的任何字符。
static String valueOf(boolean b): 返回 boolean参数的字符串表示形式。
static String valueOf(char c) : 返回 char参数的字符串表示形式。
static String valueOf(char[] data): 返回 char数组参数的字符串表示形式。
static String valueOf(char[] data, int offset, int count): 返回 char数组参数的特定子数组的字符串表示形式。
static String valueOf(double d) : 返回 double参数的字符串表示形式。
static String valueOf(float f): 返回 float参数的字符串表示形式
。
static String valueOf(int i) : 返回 int参数的字符串表示形式。
static String valueOf(long l) : 返回 long参数的字符串表示形式。
static String valueOf(Object obj) : 返回 Object参数的字符串表示形式。