字符串在java编程中广泛使用,字符串就是一系列字符(由一个个的字符组成)。 在java编程语言中,字符串被视为对象。
java平台提供string
类来创建和操作字符串。
1. 创建字符串
创建字符串的最直接方法是 -
string str = "hello world!";
每当它在代码中遇到字符串文字时,编译器就会创建一个string
对象,在本例中str
对象的值为hello world!
。
与其他对象一样,可以使用new
关键字和构造函数来创建string
对象。string
类有11
个构造函数,方便使用不同的源(例如:字符数组)提供字符串的初始值。
示例
public class stringdemo {
public static void main(string args[]) {
char[] helloarray = { 'y', 'i', 'i', 'b', 'a', 'i' };
string hellostring = new string(helloarray);
system.out.println( hellostring );
}
}
执行上面示例代码,得到下结果:
h3
注 - string
类是不可变的,因此一旦创建,就无法更改string
对象。 如果想要对字符串进行大量修改,则应使用stringbuffer和stringbuilder。
2. 字符串长度
用于获取对象信息的方法称为访问器方法。 可以与字符串一起使用来获取字符串长度的一个访问器方法是length()
方法,它返回字符串对象中包含的字符数。
以下程序是string
类的length()
方法的示例。
public class stringdemo {
public static void main(string args[]) {
string greeting = "hi,welcome to h3.com";
int len = greeting.length();
system.out.println( greeting+" 字符串的长度是: " + len );
}
}
执行上面示例代码,得到下结果:
hi,welcome to h3.com 字符串的长度是: 24
3. 连接字符串
string
类包含一个用于连接两个字符串的方法 -
string1.concat(string2);
这将返回一个新字符串:string1
,并且string1
在结尾处添加了string2
。 还可以将concat()
方法与字符串文字一起使用,例如 -
"my name is ".concat("maxsu");
字符串通常使用+
运算符连接,如 -
"hello," + " world" + "!"
上面代码执行后得到的结果是:
"hello, world!"
下面再来看另一个例子 -
public class stringdemo {
public static void main(string args[]) {
string string1 = "bai";
system.out.println("yii" + string1 + ".com");
}
}
上面代码执行后得到的结果是:
h3.com
3. 创建格式化字符串
java中使用printf()
和format()
方法来打印带有格式化数字的输出。 string
类有一个等效的类方法format()
,它返回一个string
对象而不是一个printstream
对象。
使用string
的static 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);
4. string类方法
以下是string
类定义的方法列表 -
编号 |
方法 |
描述 |
1 |
char charat(int index) |
返回指定索引处的字符。 |
2 |
int compareto(object o) |
将此string 对象与另一个对象进行比较。 |
3 |
int compareto(string anotherstring) |
按字典顺序比较两个字符串。 |
4 |
int comparetoignorecase(string str) |
按字典顺序比较两个字符串,但不区分大小写。 |
5 |
string concat(string str) |
将指定的字符串连接到此字符串的末尾。 |
6 |
boolean contentequals(stringbuffer sb) |
当且仅当此string 表示的字符串与指定的stringbuffer 相同的字符序列时,才返回true 。 |
7 |
static string copyvalueof(char[] data) |
返回表示指定数组中字符序列的string 对象形式。 |
8 |
static string copyvalueof(char[] data, int offset, int count) |
返回表示指定数组中字符序列的string 对象形式。 |
9 |
boolean endswith(string suffix) |
判断此字符串是否以指定的字符作为后缀结尾。 |
10 |
boolean equals(object anobject) |
将此字符串与指定的对象进行比较。 |
11 |
boolean equalsignorecase(string anotherstring) |
将此string 与另一个string 进行比较,忽略大小写。 |
12 |
byte getbytes() |
使用平台的默认字符集将此string 编码为字节序列,将结果存储到新的字节数组中。 |
13 |
byte[] getbytes(string charsetname) |
使用指定的字符集将此string编码为字节序列,将结果存储到新的字节数组中。 |
14 |
void getchars(int srcbegin, int srcend, char[] dst, int dstbegin) |
将此字符串中的字符复制到目标字符数组中。 |
15 |
int hashcode() |
返回此字符串的哈希码。 |
16 |
int indexof(int ch) |
返回指定字符在此字符串中第一次出现的索引。 |
17 |
int indexof(int ch, int fromindex) |
返回指定字符在此字符串中第一次出现的索引,它从指定索引处开始搜索。 |
18 |
int indexof(string str) |
返回指定子字符串在此字符串中第一次出现的索引。 |
19 |
int indexof(string str, int fromindex) |
从指定的索引处开始,返回指定子字符串在此字符串中第一次出现的索引。 |
20 |
string intern() |
返回字符串对象的规范表示。 |
21 |
int lastindexof(int ch) |
返回指定字符在此字符串中最后一次出现的索引。 |
22 |
int lastindexof(int ch, int fromindex) |
返回指定字符在此字符串中最后一次出现的索引,它从指定的索引开始向后搜索。 |
23 |
int lastindexof(string str) |
返回指定子字符串在些字符串中最后出现的索引。 |
24 |
int lastindexof(string str, int fromindex) |
返回指定子字符串在此字符串中最后一次出现的索引,它从指定索引开始向后搜索。 |
25 |
int length() |
返回此字符串的长度。 |
26 |
boolean matches(string regex) |
判断此字符串是否与给定的正则表达式匹配。 |
27 |
boolean regionmatches(boolean ignorecase, int toffset, string other, int ooffset, int len) |
判断两个字符串区域是否相等。 |
28 |
boolean regionmatches(int toffset, string other, int ooffset, int len) |
判断两个字符串区域是否相等。 |
29 |
string replace(char oldchar, char newchar) |
返回一个新字符串,该字符串是使用newchar 替换此字符串中出现的所有oldchar 后的字符串。 |
30 |
string replaceall(string regex, string replacement) |
将替换此字符串中匹配给定正则表达式的每个子字符串。 |
31 |
string replacefirst(string regex, string replacement) |
将替换此字符串中第一个匹配给定正则表达式的子字符串。 |
32 |
string[] split(string regex) |
将此字符串拆分为给定正则表达式的匹配项。 |
33 |
string[] split(string regex, int limit) |
将此字符串拆分为给定正则表达式的匹配项。 |
34 |
boolean startswith(string prefix) |
判断此字符串是否以指定的字符串前缀开头。 |
35 |
boolean startswith(string prefix, int toffset) |
判断此字符串在指定的索引是否以指定的前缀开始。 |
36 |
charsequence subsequence(int beginindex, int endindex) |
返回一个新的字符序列,它是该序列的子序列。 |
37 |
string substring(int beginindex) |
返回一个新字符串,该字符串是此字符串的子字符串。 |
38 |
string substring(int beginindex, int endindex) |
返回一个新字符串,该字符串是此字符串的子字符串。 |
39 |
char[] tochararray() |
将此字符串转换为新的字符数组。 |
40 |
string tolowercase() |
使用默认语言环境的规则将此string 中的所有字符转换为小写。 |
41 |
string tolowercase(locale locale) |
使用给定locale 的规则将此string 中的所有字符转换为小写。 |
42 |
string tostring() |
将这个对象(已经是一个字符串)本身返回。 |
43 |
string touppercase() |
使用默认语言环境的规则将此string 中的所有字符转换为大写。 |
44 |
string touppercase(locale locale) |
使用给定locale 的规则将此string 中的所有字符转换为大写。 |
45 |
string trim() |
返回字符串的副本,移除前导和尾随空格。 |
46 |
static string valueof(primitive data type x) |
返回传递的数据类型参数的字符串表示形式。 |