字符
一般情况下,当我们处理字符时,我们用原始数据类型char。
示例
charch='a';
//UnicodeforuppercaseGreekomegacharacter
charuniChar='\u039A';
//anarrayofchars
char[]charArray={'a','b','c','d','e'};
然而在开发中,我们会遇到需要使用对象而不是原始数据类型的情况。为了达到这个需求。Java为原始数据类型char提供了包装类Character。
Character类为操控字符提供了一系列有用处的类(例如:静态类)。你可以借助Character构造函数创造一个Character对象。
Characterch=newCharacter('a');
Java编译器也将能在某些情况下为你创造一个Character对象。例如:如果你将一个原始char传输到一个可预期对象的方法,编译器就会为你自动将char转化成Character。如果转换从反方向进行,这个特点被称之为自动装箱或拆箱。
示例
//Herefollowingprimitivechar'a'
//isboxedintotheCharacterobjectch
Characterch='a';
//Hereprimitive'x'isboxedformethodtest,
//returnisunboxedtochar'c'
charc=test('x');
转义序列
有反斜杠(\)在前的字符是一个转义序列并且对于编译器有特殊的意义。
换行符(\n)在System.out.println()语句中经常使用,在字符串打印出来后换行。
以下的表格展示了Java转义序列:
转义序列
描述
\t
在文本中插入一个标签。
\b
在文本中插入一个退格。
\n
在文本中插入一个换行符。
\r
在文本中插入一个回车。
\f
在文本中插入一个换页。
\'
在文本中插入一个单引号字符。
\\
在文本中插入一个反斜杠字符。
当一个转义序列遇到一个打印语句,编译器就会相应地解译。
示例
如果你想把引号放入引号内,必须使用转义序列,\”,在内部引用:
publicclassTest{
publicstaticvoidmain(Stringargs[]){
System.out.println("Shesaid\"Hello!\"tome.");
}
}
这将产生以下结果:
Shesaid"Hello!"tome.
Character方法
以下列表是实现Character类所有子类的重要的实例方法:
SN
方法描述
1
isLetter()
确定具体的char值是一个字母
2
isDigit()
确定具体的char值是一个数字
3
isWhitespace()
确定具体的char值是一个空格
4
isUpperCase()
确定具体的char值是一个大写字母
5
isLowerCase()
确定具体的char值是一个小写字母
6
toUpperCase()
返回指定字符值的大写形式
7
toLowerCase()
返回指定字符值的小写写形式
8
toString()
返回代表指定的字符值的一个String对象,即一个字符的字符串
字符串
字符串,它被广泛应用于Java编程,是一个字符序列。在Java编程语言中,字符串是对象。
Java平台提供了String类来创建和操作字符串。
创建字符串
最直接的方式来创建一个字符串是这样写的:
Stringgreeting="Helloworld!";
当你创建一个字符串时,编译器在这种情况下用它的值创建一个String对象,如:"Helloworld!'。
任何其他对象可以通过使用new关键字,并通过构造函数创建String对象。String类有11种构造函数提供使用不同类型的字符串的初始值,如一个字符数组。
publicclassStringDemo{
publicstaticvoidmain(Stringargs[]){
char[]helloArray={'h','e','l','l','o','.'};
StringhelloString=newString(helloArray);
System.out.println(helloString);
}
}
这将产生以下结果:
hello.
注String类是不可变的,因此,一旦创建了String对象那么是不能改变的。如果需要大量修改字符的字符串,那么应该使用StringBuffer&StringBuilder类。
String长度
用于获取有关对象的信息的方法称为存取方法。可以和字符串一起使用的一个存取方法是length(),它返回包含在字符串对象中的字符数。
下面的两行代码被执行之后,len等于17:
publicclassStringDemo{
publicstaticvoidmain(Stringargs[]){
Stringpalindrome="DotsawIwasTod";
intlen=palindrome.length();
System.out.println("StringLengthis:"+len);
}
}
这将产生以下结果:
StringLengthis:17
连接字符串
String类包括用于连接两个字符串的方法:
string1.concat(string2);
这返回一个新的字符串,即在string1结尾处添加string2。还可以使用concat()方法连接字符串,如:
"Mynameis".concat("Zara");
字符串更常使用“+”运算符连接在一起,如:
"Hello,"+"world"+"!"
这将产生:
"Hello,world!"
看看下面的例子:
publicclassStringDemo{
publicstaticvoidmain(Stringargs[]){
Stringstring1="sawIwas";
System.out.println("Dot"+string1+"Tod");
}
}
这将产生以下结果:
DotsawIwasTod
创建格式化字符串
已经有printf()和format()方法来打印输出格式的数字。String类有一个等价的方法format(),它返回一个String对象,而不是一个PrintStream对象。
使用字符串的静态format()方法允许创建可重复使用的格式化字符串,而不是一次性的print语句。例如,如果代替以下方法:
System.out.printf("Thevalueofthefloatvariableis"+
"%f,whilethevalueoftheinteger"+
"variableis%d,andthestring"+
"is%s",floatVar,intVar,stringVar);
可以这样写:
Stringfs;
fs=String.format("Thevalueofthefloatvariableis"+
"%f,whilethevalueoftheinteger"+
"variableis%d,andthestring"+
"is%s",floatVar,intVar,stringVar);
System.out.println(fs);
String方法
这里是由String类支持的方法列表:
SN
方法及描述
1
charcharAt(intindex)
返回指定索引处的字符。
2
intcompareTo(Objecto)
将这个字符串与另一个对象比较。
3
intcompareTo(StringanotherString)
比较两个字符串的字典顺序。
4
intcompareToIgnoreCase(Stringstr)
比较两个字符串按字典顺序,不区分大小写的差异。
5
Stringconcat(Stringstr)
将指定的字符串串连到这个字符串的结尾。
6
booleancontentEquals(StringBuffersb)
返回true当且仅当该字符串代表相同的字符序列作为指定的StringBuffer。
7
staticStringcopyValueOf(char[]data)
返回表示所指定的数组中的字符序列的字符串。
8
staticStringcopyValueOf(char[]data,intoffset,intcount)
返回表示所指定的数组中的字符序列的字符串。
9
booleanendsWith(Stringsuffix)
测试此字符串是否以指定的后缀结束。
10
booleanequals(ObjectanObject)
比较此字符串与指定的对象。
11
booleanequalsIgnoreCase(StringanotherString)
比较这个字符串到另一个字符串,忽略大小写的考虑。
12
bytegetBytes()
将此String解码使用平台的默认字符集,并将结果存储到一个新的字节数组中的字节序列。
13
byte[]getBytes(StringcharsetName
将此String解码使用指定的字符集的字节序列,并将结果存储到一个新的字节数组。
14
voidgetChars(intsrcBegin,intsrcEnd,char[]dst,intdstBegin)
从这个字符串复制字符到目标字符数组。
15
inthashCode()
为这个字符串返回一个哈希代码。
16
intindexOf(intch)
返回此字符串指定字符第一次出现处的索引。
17
intindexOf(intch,intfromIndex)
返回索引这个字符串中指定字符第一次出现处,指定索引处开始搜索。
18
intindexOf(Stringstr)
返回此字符串指定子字符串的第一次出现处的索引。
19
intindexOf(Stringstr,intfromIndex)
返回这个字符串中指定子字符串的第一次出现处的索引,从指定的索引处开始。
20
Stringintern()
返回字符串对象的规范化表示。
21
intlastIndexOf(intch)
返回此字符串指定字符最后一次出现处的索引。
22
intlastIndexOf(intch,intfromIndex)
返回此字符串指定字符最后一次出现处的索引,从指定索引开始向后搜索。
23
intlastIndexOf(Stringstr)
返回此字符串指定子字符串的最右边出现处的索引。
24
intlastIndexOf(Stringstr,intfromIndex)
返回索引这个字符串中指定子字符串的最后出现处,从指定的索引开始处向后搜索。
25
intlength()
返回此字符串的长度。
26
booleanmatches(Stringregex)
判断此字符串是否与给定的正则表达式匹配。
27
booleanregionMatches(booleanignoreCase,inttoffset,Stringother,intooffset,intlen)
测试两个字符串的区域等于。
28
booleanregionMatches(inttoffset,Stringother,intooffset,intlen)
测试两个字符串的区域都是相等的。
29
Stringreplace(charoldChar,charnewChar)
返回从newChar更换oldChar所有出现在此字符串中产生一个新的字符串。
30
StringreplaceAll(Stringregex,Stringreplacement
替换此字符串中给定的正则表达式与给定替换相匹配的每个子字符串。
31
StringreplaceFirst(Stringregex,Stringreplacement)
替换此字符串匹配给定的正则表达式给定替换第一个子字符串。
32
String[]split(Stringregex)
分割围绕给定的正则表达式匹配的这个字符串。
33
String[]split(Stringregex,intlimit)
分割围绕给定的正则表达式匹配的这个字符串。
34
booleanstartsWith(Stringprefix)
测试此字符串是否以指定的前缀开头。
35
booleanstartsWith(Stringprefix,inttoffset)
测试此字符串是否以指定索引开始的指定前缀开始。
36
CharSequencesubSequence(intbeginIndex,intendIndex)
返回一个新的字符序列,这个序列的子序列。
37
Stringsubstring(intbeginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。
38
Stringsubstring(intbeginIndex,intendIndex)
返回一个新的字符串,它是此字符串的一个子字符串。
39
char[]toCharArray()
这个字符串转换为一个新的字符数组。
40
StringtoLowerCase()
将所有在此字符串中的字符使用默认语言环境的规则小写。
41
StringtoLowerCase(Localelocale)
将所有在此字符串中的字符使用给定Locale的规则小写。
42
StringtoString()
这个对象(它已经是一个字符串!)返回字符串形式(这里是自己本身)。
43
StringtoUpperCase()
使用默认语言环境的规则将此String中所有的字符转换为大写。
44
StringtoUpperCase(Localelocale)
使用给定Locale的规则将此String中所有的字符转换为大写。
45
Stringtrim()
返回字符串的一个副本,开头和结尾的空格去除。
46
staticStringvalueOf(primitivedatatypex)
返回传递的数据类型参数的字符串表示形式。