JAVA入门教程11-String类
Java String类
字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。
String 类有 11 种构造方法,这些方法提供不同的参数来初始化字符串
注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。 如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
字符串长度
用于获取有关对象的信息的方法称为访问器方法。
String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。
连接字符串
String 类提供了连接两个字符串的方法:
string1.concat(string2);
返回 string2 连接 string1 的新字符串。也可以对字符串常量使用 concat() 方法 /*合并多个数组;合并多个字符串*/,如:
"My name is ".concat("Zara");
更常用的是使用'+'操作符来连接字符串,如:
"Hello," + " world" + "!"
创建格式化字符串
我们知道输出格式化数字可以使用 printf() 和 format() 方法。String 类使用静态方法 format() 返回一个 String 对象而不是 PrintStream 对象。
String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
System.out.printf("The value of the float variable is " +
"%f, while the value of the integer " +
"variable is %d, and the string " +
"is %s", floatVar, intVar, stringVar);
你也可以这样写
String fs;
fs = String.format("The value of the float variable is " +
"%f, while the value of the integer " +
"variable is %d, and the string " +
"is %s", floatVar, intVar, stringVar);
System.out.println(fs);
String 方法
下面是 String 类支持的方法,更多详细,参看 Java API 文档:
Java charAt() 方法
charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
语法
public char charAt(int index)
参数
-
index -- 字符的索引。
返回值
返回指定索引处的字符。
Java compareTo() 方法
compareTo() 方法用于两种方式的比较:
- 字符串与对象进行比较。
- 按字典顺序比较两个字符串。
语法
int compareTo(Object o)
或
int compareTo(String anotherString)
参数
-
o -- 要比较的对象。
-
anotherString -- 要比较的字符串。
返回值
- 如果参数字符串等于此字符串,则返回值 0;
- 如果此字符串小于字符串参数,则返回一个小于 0 的值;
- 如果此字符串大于字符串参数,则返回一个大于 0 的值。
Java compareToIgnoreCase() 方法
compareToIgnoreCase() 方法用于按字典顺序比较两个字符串,不考虑大小写。
语法
int compareToIgnoreCase(String str)
参数
-
str -- 要比较的字符串。
返回值
- 如果参数字符串等于此字符串,则返回值 0;
- 如果此字符串小于字符串参数,则返回一个小于 0 的值;
- 如果此字符串大于字符串参数,则返回一个大于 0 的值。
Java contentEquals() 方法
contentEquals() 方法用于将将此字符串与指定的 StringBuffer 比较。
语法
public boolean contentEquals(StringBuffer sb)
参数
-
sb -- 要与字符串比较的 StringBuffer。
返回值
如字符串与指定 StringBuffer 表示相同的字符序列,则返回 true;否则返回 false。
实例
public class Test {
public static void main(String args[]) {
String str1 = "String1";
String str2 = "String2";
StringBuffer str3 = new StringBuffer( "String1");
boolean result = str1.contentEquals( str3 );
System.out.println(result);
result = str2.contentEquals( str3 );
System.out.println(result);
}
}
以上程序执行结果为:
true
false
Java copyValueOf() 方法
copyValueOf() 方法有两种形式:
-
public static String copyValueOf(char[] data): 返回指定数组中表示该字符序列的字符串。
-
public static String copyValueOf(char[] data, int offset, int count): 返回指定数组中表示该字符序列的 字符串。
语法
public static String copyValueOf(char[] data)
或
public static String copyValueOf(char[] data, int offset, int count)
参数
-
data -- 字符数组。
-
offset -- 子数组的初始偏移量。。
-
count -- 子数组的长度。
返回值
如字符串与指定 StringBuffer 表示相同的字符序列,则返回 true;否则返回 false。
实例
public class Test {
public static void main(String args[]) {
char[] Str1 = {'h', 'e', 'l', 'l', 'o', ' ', 'r', 'u', 'n', 'o', 'o', 'b'};
String Str2 = "";
Str2 = Str2.copyValueOf( Str1 );
System.out.println("返回结果:" + Str2);
Str2 = Str2.copyValueOf( Str1, 2, 6 );
System.out.println("返回结果:" + Str2);
}
}
以上程序执行结果为:
返回结果:hello youj
返回结果:llo ru
Java endsWith() 方法
endsWith() 方法用于测试字符串是否以指定的后缀结束。
语法
public boolean endsWith(String suffix)
参数
-
suffix -- 指定的后缀。
返回值
如果参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true;否则返回 false。注意,如果参数是空字符串,或者等于此 String 对象(用 equals(Object) 方法确定),则结果为 true。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("W3Cschool教程:www.w3cschool.cn");
boolean retVal;
retVal = Str.endsWith( "youj" );
System.out.println("返回值 = " + retVal );
retVal = Str.endsWith( "com" );
System.out.println("返回值 = " + retVal );
}
}
以上程序执行结果为:
返回值 = false
返回值 = true
Java equals() 方法
equals() 方法用于将字符串与指定的对象比较。
语法
public boolean equals(Object anObject)
参数
-
anObject -- 与字符串进行比较的对象。
返回值
如果给定对象与字符串相等,则返回 true;否则返回 false。
实例
public class Test {
public static void main(String args[]) {
String Str1 = new String("youj");
String Str2 = Str1;
String Str3 = new String("youj");
boolean retVal;
retVal = Str1.equals( Str2 );
System.out.println("返回值 = " + retVal );
retVal = Str1.equals( Str3 );
System.out.println("返回值 = " + retVal );
}
}
以上程序执行结果为:
返回值 = true
返回值 = true
Java equalsIgnoreCase() 方法
equalsIgnoreCase() 方法用于将字符串与指定的对象比较,不考虑大小写。
语法
public boolean equalsIgnoreCase(String anotherString)
参数
-
anObject -- 与字符串进行比较的对象。
返回值
如果给定对象与字符串相等,则返回 true;否则返回 false。
Java getBytes() 方法
getBytes() 方法有两种形式:
-
getBytes(String charsetName):使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
-
getBytes(): 使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
语法
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException
或
public byte[] getBytes()
参数
-
charsetName -- 支持的字符集名称。
返回值
返回 byte 数组。
实例
import java.io.*;
public class Test {
public static void main(String args[]) {
String Str1 = new String("youj");
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("不支持的字符集");
}
}
}
以上程序执行结果为:
返回值:[B@7852e922
返回值:[B@4e25154f
返回值:[B@70dea4e
Java hashCode() 方法
hashCode() 方法用于返回字符串的哈希码。
字符串对象的哈希码根据以下公式计算:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
使用 int 算法,这里 s[i] 是字符串的第 i 个字符,n 是字符串的长度,^ 表示求幂。空字符串的哈希值为 0。
语法
public int hashCode()
参数
- 无。
返回值
返回对象的哈希码值。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("www.w3cschool.cn");
System.out.println("字符串的哈希码为 :" + Str.hashCode() );
}
}
以上程序执行结果为:
字符串的哈希码为 :321005537
Java indexOf() 方法
indexOf() 方法有以下四种形式:
-
public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
-
public int indexOf(int ch, int fromIndex): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
-
int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
-
int indexOf(String str, int fromIndex): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
语法
public int indexOf(int ch )
或
public int indexOf(int ch, int fromIndex)
或
int indexOf(String str)
或
int indexOf(String str, int fromIndex)
参数
-
ch -- 字符。
-
fromIndex -- 开始搜索的索引位置。
-
str -- 要搜索的子字符串。
返回值
指定子字符串在字符串中第一次出现处的索引,从指定的索引开始。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("W3Cschool教程:www.w3cschool.cn");
String SubStr1 = new String("youj");
String SubStr2 = new String("com");
System.out.print("查找字符 o 第一次出现的位置 :" );
System.out.println(Str.indexOf( 'o' ));
System.out.print("从第14个位置查找字符 o 第一次出现的位置 :" );
System.out.println(Str.indexOf( 'o', 14 ));
System.out.print("子字符串 SubStr1 第一次出现的位置:" );
System.out.println( Str.indexOf( SubStr1 ));
System.out.print("从第十五个位置开始搜索子字符串 SubStr1 第一次出现的位置 :" );
System.out.println( Str.indexOf( SubStr1, 15 ));
System.out.print("子字符串 SubStr2 第一次出现的位置 :" );
System.out.println(Str.indexOf( SubStr2 ));
}
}
以上程序执行结果为:
查找字符 o 第一次出现的位置 :12
从第14个位置查找字符 o 第一次出现的位置 :17
子字符串 SubStr1 第一次出现的位置:9
从第十五个位置开始搜索子字符串 SubStr1 第一次出现的位置 :-1
子字符串 SubStr2 第一次出现的位置 :16
Java intern() 方法
intern() 方法返回字符串对象的规范化表示形式。
它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。
语法
public String intern()
参数
-
无
返回值
一个字符串,内容与此字符串相同,但一定取自具有唯一字符串的池。
实例
public class Test {
public static void main(String args[]) {
String Str1 = new String("www.w3cschool.cn");
String Str2 = new String("www.w3cschool.cn");
System.out.print("规范表示:" );
System.out.println(Str1.intern());
System.out.print("规范表示:" );
System.out.println(Str2.intern());
}
}
以上程序执行结果为:
规范表示:www.w3cschool.cn
规范表示:www.w3cschool.cn
Java lastIndexOf() 方法
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。
语法
public int lastIndexOf(int ch)
或
public int lastIndexOf(int ch, int fromIndex)
或
public int lastIndexOf(String str)
或
public int lastIndexOf(String str, int fromIndex)
参数
-
ch -- 字符。
-
fromIndex -- 开始搜索的索引位置。
-
str -- 要搜索的子字符串。
返回值
指定子字符串在字符串中第一次出现处的索引值。
Java matches() 方法
matches() 方法用于检测字符串是否匹配给定的正则表达式。
调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同:
Pattern.matches(regex, str)
语法
public boolean matches(String regex)
参数
-
regex -- 匹配字符串的正则表达式。
返回值
在字符串匹配给定的正则表达式时,返回 true。
Java regionMatches() 方法
regionMatches() 方法用于检测两个字符串在一个区域内是否相等。
语法
public boolean regionMatches(int toffset,
String other,
int ooffset,
int len)
或
public boolean regionMatches(boolean ignoreCase,
int toffset,此字符串中子区域的起始偏移量
String other,字符串参数
int ooffset,字符串参数中子区域的起始偏移量
int len要比较的字符数)
参数
-
ignoreCase -- 如果为 true,则比较字符时忽略大小写。
-
toffset -- 此字符串中子区域的起始偏移量。
-
other -- 字符串参数。
-
toffset -- 字符串参数中子区域的起始偏移量。
-
len -- 要比较的字符数。
返回值
如果字符串的指定子区域匹配字符串参数的指定子区域,则返回 true;否则返回 false。是否完全匹配或考虑大小写取决于 ignoreCase 参数。
Java replace() 方法
replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串。
语法
public String replace(char oldChar,
char newChar)
参数
-
oldChar -- 原字符。
-
newChar -- 新字符。
返回值
替换后生成的新字符串。
Java replaceAll() 方法
replaceAll() 方法使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串。
语法
public String replaceAll(String regex,
String replacement)
参数
-
regex -- 匹配此字符串的正则表达式。
-
newChar -- 用来替换每个匹配项的字符串。
返回值
成功则返回替换的字符串,失败则返回原始字符串。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("www.google.com");
System.out.print("匹配成功返回值 :" );
System.out.println(Str.replaceAll("(.*)google(.*)",
"youj" ));
System.out.print("匹配失败返回值 :" );
System.out.println(Str.replaceAll("(.*)taobao(.*)",
"youj" ));
}
}
以上程序执行结果为:
匹配成功返回值 :youj
匹配失败返回值 :www.google.com
Java replaceFirst() 方法
replaceFirst() 方法使用给定的参数 replacement 替换字符串第一个匹配给定的正则表达式的子字符串。
语法
public String replaceFirst(String regex,
String replacement)
参数
-
regex -- 匹配此字符串的正则表达式。
-
replacement -- 用来替换第一个匹配项的字符串。
返回值
成功则返回替换的字符串,失败则返回原始字符串。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("hello youj,I am from youj。");
System.out.print("返回值 :" );
System.out.println(Str.replaceFirst("youj",
"google" ));
System.out.print("返回值 :" );
System.out.println(Str.replaceFirst("(.*)youj(.*)",
"google" ));
}
}
以上程序执行结果为:
匹配成功返回值 :youj
匹配失败返回值 :www.google.com
Java split() 方法
split() 方法根据匹配给定的正则表达式来拆分字符串。
语法
public String[] split(String regex,
int limit)
参数
-
regex -- 正则表达式分隔符。
-
limit -- 分割的份数。
返回值
成功则返回替换的字符串,失败则返回原始字符串。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("Welcome-to-W3CSchool.com");
System.out.println("返回值 :" );
for (String retval: Str.split("-", 2)){
System.out.println(retval);
}
System.out.println("");
System.out.println("返回值 :" );
for (String retval: Str.split("-", 3)){
System.out.println(retval);
}
System.out.println("");
System.out.println("返回值 :" );
for (String retval: Str.split("-", 0)){
System.out.println(retval);
}
System.out.println("");
System.out.println("返回值 :" );
for (String retval: Str.split("-")){
System.out.println(retval);
}
}
}
以上程序执行结果为:
返回值 :
Welcome
to-W3CSchool.com
返回值 :
Welcome
to
W3CSchool.com
返回值 :
Welcome
to
W3CSchool.com
返回值 :
Welcome
to
W3CSchool.com
Java startsWith() 方法
startsWith() 方法用于检测字符串是否以指定的前缀开始。
语法
public boolean startsWith(String prefix, int toffset)
或
public boolean startsWith(String prefix)
参数
-
prefix -- 前缀。
-
toffset -- 字符串中开始查找的位置。
返回值
如果字符串以指定的前缀开始,则返回 true;否则返回 false。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("www.w3cschool.cn");
System.out.print("返回值 :" );
System.out.println(Str.startsWith("www") );
System.out.print("返回值 :" );
System.out.println(Str.startsWith("w3cschool") );
System.out.print("返回值 :" );
System.out.println(Str.startsWith("w3cschool", 4) );
}
}
以上程序执行结果为:
返回值 :true
返回值 :false
返回值 :true
Java subSequence() 方法
startsWith() 方法返回一个新的字符序列,它是此序列的一个子序列。
语法
public CharSequence subSequence(int beginIndex, int endIndex)
参数
-
beginIndex -- 起始索引(包括)。
-
endIndex -- 结束索引(不包括)。
返回值
返回一个新的字符序列,它是此序列的一个子序列。
Java substring() 方法
substring() 方法返回字符串的子字符串。
语法
public String substring(int beginIndex)
或
public String substring(int beginIndex, int endIndex)
参数
-
beginIndex -- 起始索引(包括)。
-
endIndex -- 结束索引(不包括)。
返回值
子字符串。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("www.w3cschool.cn");
System.out.print("返回值 :" );
System.out.println(Str.substring(4) );
System.out.print("返回值 :" );
System.out.println(Str.substring(4, 10) );
}
}
以上程序执行结果为:
返回值 :w3cschool.cn
返回值 :w3cschool
Java toCharArray() 方法
toCharArray() 方法将字符串转换为字符数组。
语法
public char[] toCharArray()
参数
-
无
返回值
字符数组。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("www.w3cschool.cn");
System.out.print("返回值 :" );
System.out.println( Str.toCharArray() );
}
}
以上程序执行结果为:
返回值 :www.w3cschool.cn
Java toLowerCase() 方法
toLowerCase() 方法将字符串转换为小写。
语法
public String toLowerCase()
或
public String toLowerCase(Locale locale)
参数
-
无
返回值
转换为小写的字符串。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("www.w3cschool.cn");
System.out.print("返回值 :" );
System.out.println( Str.toLowerCase() );
}
}
以上程序执行结果为:
返回值 :www.w3cschool.cn
Java toString() 方法
toString() 方法返回此对象本身(它已经是一个字符串)。
语法
public String toString()
参数
-
无
返回值
字符串本身。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("www.w3cschool.cn");
System.out.print("返回值 :" );
System.out.println( Str.toString() );
}
}
以上程序执行结果为:
返回值 :www.w3cschool.cn
Java toUpperCase() 方法
toUpperCase() 方法将字符串小写字符转换为大写。
语法
public String toUpperCase()
或
public String toUpperCase(Locale locale)
参数
-
无
返回值
字符转换为大写后的字符串。
实例
public class Test {
public static void main(String args[]) {
String Str = new String("www.w3cschool.cn");
System.out.print("返回值 :" );
System.out.println( Str.toUpperCase() );
}
}
以上程序执行结果为:
返回值 :www.w3cschool.cn
Java trim() 方法
trim() 方法用于删除字符串的头尾空白符。
语法
public String trim()
参数
-
无
返回值
删除头尾空白符的字符串。
实例
public class Test {
public static void main(String args[]) {
String Str = new String(" www.w3cschool.cn ");
System.out.print("原始值 :" );
System.out.println( Str );
System.out.print("删除头尾空白 :" );
System.out.println( Str.trim() );
}
}
以上程序执行结果为:
原始值 : www.w3cschool.cn
删除头尾空白 :www.w3cschool.cn
Java valueOf() 方法
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 参数的字符串表示形式。
语法
static String valueOf(boolean b)
或
static String valueOf(char c)
或
static String valueOf(char[] data)
或
static String valueOf(char[] data, int offset, int count)
或
static String valueOf(double d)
或
static String valueOf(float f)
或
static String valueOf(int i)
或
static String valueOf(long l)
或
static String valueOf(Object obj)
参数
-
指定类型参数。
返回值
删除头尾空白符的字符串。
实例
public class Test {
public static void main(String args[]) {
double d = 1100.00;
boolean b = true;
long l = 1234567890;
char[] arr = {'r', 'u', 'n', 'o', 'o', 'b' };
System.out.println("返回值 : " + String.valueOf(d) );
System.out.println("返回值 : " + String.valueOf(b) );
System.out.println("返回值 : " + String.valueOf(l) );
System.out.println("返回值 : " + String.valueOf(arr) );
}
}
以上程序执行结果为:
返回值 : 1100.0
返回值 : true
返回值 : 1234567890
返回值 : youj