字符串操作是计算机程序设计中最常见的行为。
String类在线API http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
一、构造函数(15个)
构造方法 |
说明 |
||
String() |
初始化一个新创建的String对象,使其表示一个空字符序列。 |
||
使用字节数组构造新字符串(7个) |
String(byte[] bytes) |
通过使用平台的默认字符集解码指定的byte数组,构造一个新的String。 |
|
String(byte[] bytes , Charset charset) |
通过使用指定的charset解码指定的byte数组,构造一个新的String。 |
||
String(byte[] ascii, int hibyte) |
已过时。该方法无法将字节正确地转换为字符。从 JDK 1.1开始,完成该转换的首选方法是使用带有 Charset、字符集名称,或使用平台默认字符集的 String构造方法。 |
||
String(byte[] bytes, int offset, int length, Charset charset) |
通过使用指定的 charset解码指定的 byte子数组,构造一个新的 String。 |
||
String(byte[] ascii, int hibyte, int offset, int count) |
已过时。该方法无法将字节正确地转换为字符。从 JDK 1.1开始,完成该转换的首选方法是使用带有 Charset、字符集名称,或使用平台默认字符集的 String构造方法。 |
||
String(byte[] bytes, int offset, int length, String charsetName) |
通过使用指定的 charset解码指定的 byte数组,构造一个新的 String。 |
||
String(byte[] bytes, String charsetName) |
通过使用指定的 charset解码指定的 byte数组,构造一个新的 String。 |
||
使用字符数组构造新字符串 |
String(char[] value) |
分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。 |
|
String(char[] value, int offset, int count) |
分配一个新的 String,它包含取自字符数组参数一个子数组的字符。 |
|
|
String(int[] codePoints, int offset, int count) |
分配一个新的 String,它包含 Unicode 代码点数组参数一个子数组的字符。 |
||
String(String original) |
初始化一个新创建的 String对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。 |
||
String(StringBuffer buffer) |
分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。 |
||
String(StringBuilder builder) |
分配一个新的字符串,它包含字符串生成器参数中当前包含的字符序列。 |
构造方法说明:在String类中共有15个构造方法:
大致可以分为五类:
构造空字符串:Stringstr = new String();
使用字节数组构造新字符串(7个)
使用字符数组构造新字符串(2个)
使用代码点构造新字符串(1个)
使用类字符串对象构造新字符串
5.1使用字符串构造新字符串Stringa = new String(“abc”);
5.2使用StringBuffer对象构造新字符串StringBuffer sb = new StringBuffer(“abc”);Stringb = new String(sb);
5.3使用StringBuilder对象构造新字符串StringBuilder sbi = new StringBuilder(“abc”); String c = new String(sbi);
String对象是不可边的,String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。而最初的String对象则纹丝不动。
代码:
String str ="adc_123_@#";
System.out.println(str.concat("d"));//adc_123_@#d
System.out.println(str);//adc_123_@#
concat方法实现:
publicString concat(String str){
int otherLen =str.length();
if (otherLen ==0) {
returnthis;
}
int len =value.length;
char buf[] =Arrays.copyOf(value, len +otherLen);
str.getChars(buf, len);
returnnew String(buf,true);
}
可以看出该方法只是在原字符串的副本上进行操作,且返回的是一个新的对象returnnew String(buf,true);
String类中其它看似改变值的方法实现类似。
二、方法分类:
1.对象之间的比较
返回值类型 |
方法 |
说明 |
int |
compareTo(String anotherString) |
按字典顺序比较两个字符串。 |
int |
compareToIgnoreCase(String str) |
按字典顺序比较两个字符串,不考虑大小写。 |
boolean |
contentEquals(CharSequence cs) |
将此字符串与指定的参数比较。此方法接收的参数可以是CharSequence、StringBuffer、StringBuilder |
boolean |
matches(String regex) |
告知此字符串是否匹配给定的正则表达式。 |
boolean |
startsWith |
测试此字符串是否以指定的内容开始。 |
boolean |
endsWith |
测试此字符串是否以指定的后缀结束。 |
boolean |
1.contains(CharSequence s) 2.contentEquals(CharSequence cs) |
当且仅当此字符串包含指定的 char值序列时,返回 true。 |
2.索引信息方法
返回值类型 |
方法 |
说明 |
char |
charAt(int index) |
返回指定索引处的char 值。注:索引号从0开始 |
int |
codePointAt(int index) |
返回指定索引处的字符(Unicode代码点)。 |
int |
codePointBefore(int index) |
返回指定索引之前的字符(Unicode代码点)。 |
int |
codePointCount(int beginIndex, int endIndex) |
返回此String 的指定文本范围中的 Unicode代码点数。 |
int |
indexOf |
返回指定字符在此字符串中第一次出现处的索引。 |
int |
lastIndexOf |
返回指定字符在此字符串中最后一次出现处的索引。 |
3.字符串与其他类型之间的转换
返回值类型 |
方法 |
说明 |
static String |
1.copyValueOf(char[]data) 2.copyValueOf(char[] data, int offset, int count) |
返回指定数组中表示该字符序列的 String。 |
getBytes() |
将字符串对象转换成字节数组。 |
|
void |
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) |
将字符从此字符串复制到目标字符数组。 |
char[] |
toCharArray() |
将此字符串转换为一个新的字符数组。 |
static String |
valueOf |
返回参数的字符串表示形式。此方法被重载多次,可以接受任意类型的参数。 |
4.字符串处理
分类 |
返回值类型 |
方法 |
说明 |
去前后空白 |
String |
trim() |
返回字符串的副本,忽略前导空白和尾部空白。此方法不能去除中间的空白。 |
大小写转换 |
String |
toLowerCase() |
使用默认语言环境的规则将此 String中的所有字符都转换为小写。 |
String |
toUpperCase() |
||
子串 |
CharSequence |
subSequence |
返回一个新的字符序列,它是此序列的一个子序列。 |
String |
substring(int beginIndex) |
返回一个新的字符串,它是此字符串的一个子字符串。 |
|
String |
substring(int beginIndex, int endIndex) |
返回一个新字符串,它是此字符串的一个子字符串。 |
|
替换 |
String |
replace |
|
String |
replaceAll |
||
String |
replaceFirst |
||
分割 |
String[] |
split |
根据给定正则表达式的匹配拆分此字符串。 |
拼接 |
String |
concat(String str) |
将指定字符串连接到此字符串的结尾。 |
String |
toString |
返回此对象本身(它已经是一个字符串!)。 |
5.其他方法
返回值类型 |
方法 |
说明 |
int |
hashCode() |
返回此字符串的哈希码。 |
String |
intern() |
返回字符串对象的规范化表示形式。(入池操作) |
boolean |
isEmpty() |
当且仅当 length()为 0时返回 true。 |
int |
length() |
返回此字符串的长度。 |
static String |
format(Locale l, String format, Object... args) format(String format, Object... args) |
返回一个格式化字符串。 |
6.从Object类中继承的方法
clone,finalize,getClass,notify,notifyAll,wait,wait,wait