Java String 类
字符串广泛应用 在Java 编程中,字符串属于对象。
一、创建字符串:
String str = "abc";
注意:String 类是不可改变的,一旦创建了 String 对象,那它的值就无法改变了。
如果需要对字符串做修改,那么应该选择使用 StringBuffer & StringBuilder 类。
二、字符串长度:
String 类有一个方法是 length() 方法,它返回字符串对象包含的字符数(字符串的长度)。
String str = "abcdefg";
System.out.println(str.length());
三、连接字符串:
String 类提供了连接两个字符串的方法:
concat返回 str2 连接 str1 的新字符串。
“abc”.concat("中国");
比较常用的是使用'+'操作符来连接字符串,如:
“abc”+"中国";
四、String 方法:
1.char charAt(int index)
charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
String s = "abcde";
char result = s.charAt(3);
System.out.println(result);
2.int compareTo(Object o)
compareTo() 方法用于两种方式的比较:
字符串与对象进行比较。
按字典顺序比较两个字符串。
语法:
int compareTo(Object o)
或
int compareTo(String anotherString)
参数:
o -- 要比较的对象。
anotherString -- 要比较的字符串。
返回值:
如果参数字符串等于此字符串,则返回值 0;
如果此字符串小于字符串参数,则返回一个小于 0 的值;
如果此字符串大于字符串参数,则返回一个大于 0 的值。
String str1 = "String";
String str2 = "String";
String str3 = "Strings中国";
int result = str1.compareTo( str2 );
System.out.println(result);
result = str2.compareTo( str3 );
System.out.println(result);
result = str3.compareTo( str1 );
System.out.println(result);
3.int compareToIgnoreCase(String str)
按字典顺序比较两个字符串,不考虑大小写。
4.String concat(String str)
将指定字符串连接到此字符串的结尾。
5.boolean equals(Object anObject)
将此字符串与指定的对象比较。
如果给定对象与字符串相等,则返回 true;否则返回 false。
String Str1 = new String("abc");
String Str2 = "abc";
boolean retsult = Str1.equals( Str2 );
System.out.println( retsult );
6.boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。
7.byte[] getBytes()
getBytes() 方法有两种形式:
getBytes(String charsetName): 使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
getBytes(): 使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
String Str1 = new String("abc");
try{
byte[] Str2 = Str1.getBytes();
System.out.println(Str2 );
Str2 = Str1.getBytes( "UTF-8" );
System.out.println( Str2 );
Str2 = Str1.getBytes( "ISO-8859-1" );
System.out.println( Str2 );
} catch ( UnsupportedEncodingException e){
System.out.println("不支持的字符集");
}
8.int hashCode()
返回此字符串的哈希码。
字符串对象的哈希码根据以下公式计算:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
使用 int 算法,这里 s[i] 是字符串的第 i 个字符,n 是字符串的长度,^ 表示求幂。空字符串的哈希值为 0。
String Str = new String("abc");
System.out.println( Str.hashCode() );
9.int indexOf(int ch)
返回指定子字符串在此字符串中第一次出现处的索引。
indexOf() 方法有以下四种形式:
public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
public int indexOf(int ch, int index): 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索,如果此字符串中没有这样的字符,则返回 -1。
int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
int indexOf(String str, int index): 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始,如果此字符串中没有这样的字符,则返回 -1。
参数:
ch -- 字符。
index -- 开始搜索的索引位置。
str -- 要搜索的子字符串。
String Str = new String("abcdefg");
System.out.println(Str.indexOf( 'o' ));
System.out.println(Str.indexOf( 'o', 3 ));
10.int lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出现处的索引。
lastIndexOf() 方法有以下四种形式:
public int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
public int lastIndexOf(int ch, int fromIndex): 返返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索,如果此字符串中没有这样的字符,则返回 -1。
public int lastIndexOf(String str): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
public int lastIndexOf(String str, int fromIndex): 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索,如果此字符串中没有这样的字符,则返回 -1。
11.int length()
返回此字符串的长度。
12.boolean matches(String regex)
告知此字符串是否匹配给定的正则表达式。
参数:
regex -- 匹配字符串的正则表达式。
String Str = new String("abcdefg");
System.out.println(Str.matches("(.*)def(.*)"));
13.String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String Str = new String("hello");
System.out.println(Str.replace('o', 'T'));
14.String replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串,成功则返回替换的字符串,失败则返回原始字符串。
15.String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
String Str = new String("ab-c-de-f");
byte b[]=Str.split("-");
for (String s: b){
System.out.println(s);
}
16.String[] split(String regex, int limit)
根据匹配给定的正则表达式来拆分此字符串。
参数:
regex -- 正则表达式分隔符。
limit -- 分割的份数。
17.String substring()
返回一个新的字符串,它是此字符串的一个子字符串。
语法:
public String substring(int beginIndex)
或
public String substring(int beginIndex, int endIndex)
参数:
beginIndex -- 起始索引(必填)。
endIndex -- 结束索引(不必填)。
String Str = new String("abcdefg");
System.out.println(Str.substring(4) );
System.out.println(Str.substring(3, 5) );
18.char[] toCharArray()
将此字符串转换为一个新的字符数组。
String Str = new String("abcde");
System.out.println( Str.toCharArray() )
19.String toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
String Str = new String("ABC");
System.out.println( Str.toLowerCase() );
20.String toLowerCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。
21.String toString()
返回此对象本身。
String Str = new String("ABC");
System.out.println( Str.toString() );
22.String toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
23.String toUpperCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。
24.String trim()
返回字符串的副本,忽略前导空白和尾部空白(删除头部和尾部空白符)。
String Str = new String(" abc ");
System.out.println( Str.trim() );
25.static String valueOf(primitive data type x)
返回给定data type类型x参数的字符串表示形式。
valueOf() 方法有以下几种不同形式:
valueOf(boolean b): 返回 boolean 参数的字符串表示形式。.
valueOf(char c): 返回 char 参数的字符串表示形式。
valueOf(char[] data): 返回 char 数组参数的字符串表示形式。
valueOf(char[] data, int offset, int count): 返回 char 数组参数的特定子数组的字符串表示形式。
valueOf(double d): 返回 double 参数的字符串表示形式。
valueOf(float f): 返回 float 参数的字符串表示形式。
valueOf(int i): 返回 int 参数的字符串表示形式。
valueOf(long l): 返回 long 参数的字符串表示形式。
valueOf(Object obj): 返回 Object 参数的字符串表示形式。
int a=1;
double b = 100.00;
char[] c = {'a', 'b', 'c', 'd', 'e'};
System.out.println(String.valueOf(a) );
System.out.println(String.valueOf(b) );
System.out.println(String.valueOf(c) );