字符
一般情况下,当我们处理字符时,我们用原始数据类型 char。
示例
1
2
3
4
5
6
7
|
char ch = 'a' ;
// Unicode for uppercase Greek omega character
char uniChar = '\u039A' ;
// an array of chars
char [] charArray ={ 'a' , 'b' , 'c' , 'd' , 'e' };
|
然而在开发中,我们会遇到需要使用对象而不是原始数据类型的情况。为了达到这个需求。Java 为原始数据类型 char 提供了包装类 Character。
Character 类为操控字符提供了一系列有用处的类(例如:静态类)。你可以借助 Character 构造函数创造一个 Character 对象。
1
|
Character ch = new Character( 'a' );
|
Java 编译器也将能在某些情况下为你创造一个 Character 对象。例如:如果你将一个原始 char 传输到一个可预期对象的方法,编译器就会为你自动将 char 转化成 Character。 如果转换从反方向进行,这个特点被称之为自动装箱或拆箱。
示例
1
2
3
4
5
6
7
8
|
// Here following primitive char 'a'
// is boxed into the Character object ch
Character ch = 'a' ;
// Here primitive 'x' is boxed for method test,
// return is unboxed to char 'c'
char c = test( 'x' );
|
转义序列
有反斜杠(\)在前的字符是一个转义序列并且对于编译器有特殊的意义。
换行符(\n)在 System.out.println() 语句中经常使用,在字符串打印出来后换行。
以下的表格展示了 Java 转义序列:
转义序列 |
描述 |
---|---|
\t |
在文本中插入一个标签。 |
\b |
在文本中插入一个退格。 |
\n |
在文本中插入一个换行符。 |
\r |
在文本中插入一个回车。 |
\f |
在文本中插入一个换页。 |
\' |
在文本中插入一个单引号字符。 |
\\ |
在文本中插入一个反斜杠字符。 |
当一个转义序列遇到一个打印语句,编译器就会相应地解译。
示例
如果你想把引号放入引号内,必须使用转义序列, \” ,在内部引用:
1
2
3
4
5
6
|
public class Test {
public static void main(String args[]) {
System.out.println( "She said \"Hello!\" to me." );
}
}
|
这将产生以下结果:
She said "Hello!" to me.
Character 方法
以下列表是实现 Character 类所有子类的重要的实例方法:
SN |
方法描述 |
---|---|
1 |
isLetter() |
2 |
isDigit() |
3 |
isWhitespace() |
4 |
isUpperCase() |
5 |
isLowerCase() |
6 |
toUpperCase() |
7 |
toLowerCase() |
8 |
toString() |
字符串
字符串,它被广泛应用于 Java 编程,是一个字符序列。在 Java 编程语言中,字符串是对象。
Java 平台提供了 String 类来创建和操作字符串。
创建字符串
最直接的方式来创建一个字符串是这样写的:
String greeting = "Hello world!";
当你创建一个字符串时,编译器在这种情况下用它的值创建一个 String 对象,如:"Hello world!'。
任何其他对象可以通过使用 new 关键字,并通过构造函数创建 String 对象。 String 类有11种构造函数提供使用不同类型的字符串的初始值,如一个字符数组。
1
2
3
4
5
6
7
8
|
public class StringDemo{
public static void main(String args[]){
char [] helloArray = { 'h' , 'e' , 'l' , 'l' , 'o' , '.' };
String helloString = new String(helloArray);
System.out.println( helloString );
}
}
|
这将产生以下结果:
1
|
hello.
|
注 String 类是不可变的,因此,一旦创建了 String 对象那么是不能改变的。如果需要大量修改字符的字符串,那么应该使用 StringBuffer & StringBuilder 类。
String 长度
用于获取有关对象的信息的方法称为存取方法。可以和字符串一起使用的一个存取方法是 length() ,它返回包含在字符串对象中的字符数。
下面的两行代码被执行之后,len 等于17:
1
2
3
4
5
6
7
8
|
public class StringDemo {
public static void main(String args[]) {
String palindrome = "Dot saw I was Tod" ;
int len = palindrome.length();
System.out.println( "String Length is : " + len );
}
}
|
这将产生以下结果:
1
|
String Length is : 17
|
连接字符串
String类包括用于连接两个字符串的方法:
1
|
string1.concat(string2);
|
这返回一个新的字符串,即在 string1 结尾处添加 string2。还可以使用 concat()方法连接字符串,如:
1
|
"My name is " .concat( "Zara" );
|
字符串更常使用 “ + ” 运算符连接在一起,如:
1
|
"Hello," + " world" + "!"
|
这将产生:
1
|
"Hello, world!"
|
看看下面的例子:
1
2
3
4
5
6
7
|
public class StringDemo {
public static void main(String args[]) {
String string1 = "saw I was " ;
System.out.println( "Dot " + string1 + "Tod" );
}
}
|
这将产生以下结果:
1
|
Dot saw I was Tod
|
创建格式化字符串
已经有 printf() 和 format() 方法来打印输出格式的数字。 String 类有一个等价的方法 format(),它返回一个 String 对象,而不是一个 PrintStream 对象。
使用字符串的静态 format() 方法允许创建可重复使用的格式化字符串,而不是一次性的 print 语句。例如,如果代替以下方法:
1
2
3
4
|
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);
|
可以这样写:
1
2
3
4
5
6
|
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 类支持的方法列表:
SN |
方法及描述 |
---|---|
1 |
char charAt(int index) |
2 |
int compareTo(Object o) |
3 |
int compareTo(String anotherString) |
4 |
int compareToIgnoreCase(String str) |
5 |
String concat(String str) |
6 |
boolean contentEquals(StringBuffer sb) |
7 |
static String copyValueOf(char[] data) |
8 |
static String copyValueOf(char[] data, int offset, int count) |
9 |
boolean endsWith(String suffix) |
10 |
boolean equals(Object anObject) |
11 |
boolean equalsIgnoreCase(String anotherString) |
12 |
byte getBytes() |
13 |
byte[] getBytes(String charsetName |
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) |
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() |
41 |
String toLowerCase(Locale locale) |
42 |
String toString() |
43 |
String toUpperCase() |
44 |
String toUpperCase(Locale locale) |
45 |
String trim() |
46 |
static String valueOf(primitive data type x) |