该用户从未签到
|
String : 字符串类型
( u. U: }8 F: D5 T8 t
4 e0 u! r4 k* X7 L: V- n- v一、构造函数
/ n* r5 u2 U! Z/ U String(byte[ ] bytes):通过byte数组构造字符串对象。
) N# F, d/ @* n' n8 q String(char[ ] value):通过char数组构造字符串对象。% a2 g6 {+ K$ C _/ Z5 s
String(Sting original):构造一个original的副本。即:拷贝一个original。
& e Q, W) y4 l String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。
% M4 Y8 s7 |8 T2 u! r例如:$ l2 J" J, A* H( R
byte[] b = {'a','b','c','d','e','f','g','h','i','j'};5 w F4 p4 @5 j$ H6 n
char[] c = {'0','1','2','3','4','5','6','7','8','9'};0 z/ R# x0 F2 E" E5 j3 h$ [ c4 B. e7 C
String sb = new String(b); //abcdefghij
) h$ M* F/ r0 x String sb_sub = new String(b,3,2); //de
2 ~* Q }' l7 _- k String sc = new String(c); //0123456789
. k$ d2 N1 j$ x7 @5 @2 S/ \" S String sc_sub = new String(c,3,2); //34
* K3 X' S o" Z, `$ A6 e/ l String sb_copy = new String(sb); //abcdefghij
0 r% z9 T# {$ a System.out.println("sb:"+sb);
* R4 U+ B$ L; j- ^9 G* o9 f System.out.println("sb_sub:"+sb_sub);$ P2 X) U1 Q4 A' U- w* ~
System.out.println("sc:"+sc);0 H5 i) Q, v5 W4 v/ O" _
System.out.println("sc_sub:"+sc_sub);
x) z0 \, q. e, n. C& J3 e System.out.println("sb_copy:"+sb_copy);8 X9 n& ]' U2 ^ `' i
输出结果:sb:abcdefghij
9 f; C/ `7 S9 B* K sb_sub:de: }& W% i3 [* K8 T# y
sc:0123456789 O" I& a8 J* d" K: j$ F: s4 r& r
sc_sub:34
' e3 x" u" q9 w, ^, t4 E, v sb_copy:abcdefghij
1 Z7 M! R: ?$ P3 A8 G. K* ?9 E9 `8 l* g, j3 s2 D1 A8 F& u
二、方法:9 s% l2 E; o8 y }) y. W
# N' `, Z- Y) V+ @+ ^+ P 说明:①、所有方法均为public。
4 I5 o5 G# K% R6 y8 ?! t7 t ②、书写格式: [修饰符] <返回类型><方法名([参数列表])>" B3 ^) Q" E/ v8 z
8 k' m# ^# m- c( v Y 例如:static int parseInt(String s)
: y. _- v* L7 x 表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。
4 f+ N! t0 g: K7 d0 i' e& V
6 _. t7 O! P* v2 Y7 j- V4 M Q5 F" N1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。' E1 {1 H5 f! o, W
5 ~4 g" k9 @3 v5 q$ T* C4 l7 a/ C' h
. y$ s+ _# P) M9 K+ E
4 O4 r8 n( r; _
例如:String s = new String("abcdefghijklmnopqrstuvwxyz");9 b7 }' Z9 g( y0 R+ [8 m$ t/ l. @4 F
System.out.println("s.charAt(5): " + s.charAt(5) );$ _. Y+ H9 U2 {8 ~6 K
结果为: s.charAt(5): f% q- ?' w( U' ^4 I7 [; i& N
2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
1 ]7 a$ a' A# Q; g9 ^2 @! a: d3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。
+ R, m3 b; B3 l/ y0 v9 `6 u 例如:String s1 = new String("abcdefghijklmn");8 T: I, j2 c1 x) m$ _
String s2 = new String("abcdefghij");- f9 ^( V1 m, q! x8 a7 D
String s3 = new String("abcdefghijalmn");
; p% \6 _. u5 _8 n9 G: R" b System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差
0 T1 @$ o) D( c C# C* C2 |6 K9 t System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差' o% ]9 T* C( T9 n0 R/ r
结果为:s1.compareTo(s2): 4
0 K7 a ?# X9 ] s1.compareTo(s3): 10
& E/ ?- ^* A" A8 ~& T4. String concat(String str) :将该String对象与str连接在一起。
. m1 F, R* {9 h+ ^: A) G5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。$ S, S6 s5 z' A/ N( ~5 E {
6. static String copyValueOf(char[] data) :
9 ~ b8 u- s! [7 _0 B/ [) `7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。
6 Y' k/ H" U- s1 O' S2 E8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。; J9 Q4 N1 Z( K | F, ]/ Z9 x! o
例如:String s1 = new String("abcdefghij");2 I( e# y, ?3 L! ^, f- B
String s2 = new String("ghij");8 r1 [# @% Y& s* K3 w
System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );4 [+ N" s9 f3 t" \- O, K7 r* z
结果为:s1.endsWith(s2): true
/ ~0 R9 Q/ @0 a m/ |! L9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。+ R: f" e" ]7 L
10. byte[] getBytes() :将该String对象转换成byte数组。6 l* L4 r% Z. H- `! v/ V, r
11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。! E2 W$ C0 ]) x
例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!
/ N7 J8 z' s7 j* \" ~ String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!4 h/ \, G" [! O: R
System.out.println( s1 );
; _- ]2 J8 T+ R" S; p( e0 T 结果为:I love you!! D, u8 V; ?0 h1 r# {6 ?2 B
12. int hashCode() :返回当前字符的哈希表码。' o: h! G. K' a! J4 i' W% K
13. int indexOf(int ch) :只找第一个匹配字符位置。
6 Q# n( R9 T9 U6 Y14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。9 A6 H6 o, X9 ~) g, S; @
15. int indexOf(String str) :只找第一个匹配字符串位置。
) W( E& G# [+ D0 V1 i) q16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。8 {% I# t0 m: R% L8 i7 T6 J2 T
例如:String s = new String("write once, run anywhere!");
9 [( ~: \$ H9 L5 N) n3 P String ss = new String("run");9 q7 g1 E( [# s9 Q8 y( T
System.out.println("s.indexOf('r'): " + s.indexOf('r') );( G9 \1 P8 I0 ~0 _& k# ?
System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );
/ O/ Q6 j" `7 k( |; m6 o System.out.println("s.indexOf(ss): " + s.indexOf(ss) );0 r3 h$ |: b! x! i
结果为:s.indexOf('r'): 1
' j( b! u- k* L. r s.indexOf('r',2): 12
" u9 M2 b; L- n6 c" ^7 L s.indexOf(ss): 12% t/ x3 f+ Y4 }
17. int lastIndexOf(int ch)7 |( q8 p W- Z8 N* D9 a" l! W( {
18. int lastIndexOf(int ch, int fromIndex)7 |% h F0 j4 J
19. int lastIndexOf(String str)
( l3 w5 y5 K0 Q& |. G20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。5 W3 H8 i0 {% h/ U
public class CompareToDemo {" b* x* Z7 V! p0 K) N% Z
public static void main (String[] args) {
0 a; `% G- t- ^4 D# n0 A1 L$ w String s1 = new String("acbdebfg");; j, v% H' l; @# w6 A+ ^
1 y2 Y& d& {* x+ B8 `0 F1 U
System.out.println(s1.lastIndexOf((int)'b',7));$ S, [* x( Y2 a6 c" P D2 K P
}
* n9 q9 B- E- s+ w} d" W: S* e- T8 l
运行结果:5
' v' e/ H6 y2 j, B0 U (其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)' Q; j6 z3 `# _7 I4 u" j( G
' M% c, k! t, C7 j8 {
4 X: P0 c1 @0 {; ^
21. int length() :返回当前字符串长度。7 f5 G7 J( i: j, A7 L# C
22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。' K' j6 V* O* I& H: r
23. boolean startsWith(String prefix) :该String对象是否以prefix开始。
, [ t0 m# D" L5 T0 F2 O/ H, Z5 {24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。$ O, p+ E! D6 G* I
例如:String s = new String("write once, run anywhere!");
+ `- Y4 O$ g; w% ]5 Y String ss = new String("write");4 M0 n# D! q* c; S. \; d
String sss = new String("once");' ?! C$ r5 k* M$ D) {
System.out.println("s.startsWith(ss): " + s.startsWith(ss) );
& w2 \$ q; [( k% n1 b System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );
# d8 U* {# U, ]9 q: c% O 结果为:s.startsWith(ss): true; i1 ^/ X2 H& V" x
s.startsWith(sss,6): true- m! k0 k( ?5 Y
25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。
6 [2 n+ e# z; L X26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。
' w) O+ ?- }: N# I' F& W) }27. char[ ] toCharArray() :将该String对象转换成char数组。
! D( d" n# X5 Z1 a2 Z28. String toLowerCase() :将字符串转换成小写。0 p! R6 W$ w% Z1 a, W' c6 F3 D) L
29. String toUpperCase() :将字符串转换成大写。
9 W- d6 E& k5 X 例如:String s = new String("java.lang.Class String");
4 {: X& G f+ A5 |/ j' \ System.out.println("s.toUpperCase(): " + s.toUpperCase() );, B& J0 I8 L( O% v
System.out.println("s.toLowerCase(): " + s.toLowerCase() );1 X0 W U; y! j6 g
结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING
. ~8 r1 V! C/ q9 i5 I s.toLowerCase(): java.lang.class string; _" u5 f/ l/ |& Q
30. static String valueOf(boolean b)
! ]0 }" y- q& l2 J+ T* a& H31. static String valueOf(char c)
/ c3 Q6 Y/ |+ o3 P2 s3 a f32. static String valueOf(char[] data)
3 J2 }- y; {* P9 X+ A8 v33. static String valueOf(char[] data, int offset, int count)
; p8 I. V* a' x* D4 J( H34. static String valueOf(double d)1 c {' Q& [) h: F
35. static String valueOf(float f)
, O$ |' P& I3 N! J+ N0 B36. static String valueOf(int i)) Q" U( U6 |( M0 g" l g M) v0 z) R
37. static String valueOf(long l)
% l6 \7 r7 O' T9 v3 W+ D) B. X/ _38. static String valueOf(Object obj)' R2 J* M: C3 S
以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。 _; A5 y, j: I4 p5 a. b; I
# M$ Z# l0 x9 j1 x" O3 v6 M% i8 s9 U0 T* [( P2 a) ] J" r
/ h8 G, |( Q2 k# [) F" x
* \8 ^7 ~% i8 a
- q1 Z8 [1 C5 n$ r( H, Q
Java中String类的常用方法:
' Z+ z- x- i8 C9 X0 f/ F% L) w- {/ B0 s% F* r
public char charAt(int index)
0 n, n# T$ o. u4 y6 {返回字符串中第index个字符;
3 R3 B) [( G0 L* k% @5 `: O5 epublic int length()
2 U: C* H$ c3 E返回字符串的长度;
b8 y; O2 X/ H, vpublic int indexOf(String str)/ p0 h3 K! F5 L9 ?6 B
返回字符串中第一次出现str的位置;
; B$ s6 q* [9 l: Ypublic int indexOf(String str,int fromIndex)9 t; g7 v+ G' k P: ~
返回字符串从fromIndex开始第一次出现str的位置;8 S. i9 t+ G1 Y5 w: G
public boolean equalsIgnoreCase(String another)) \% }3 K+ z& e
比较字符串与another是否一样(忽略大小写);1 }/ g; @: ?4 b \/ w( t
public String replace(char oldchar,char newChar)$ o, l, r# {2 Y( k: s9 [
在字符串中用newChar字符替换oldChar字符* j4 O. g: X# U N$ p2 ~4 Z
public boolean startsWith(String prefix)
) o; O" ]) |: A! i4 l判断字符串是否以prefix字符串开头;" n' ]2 h& f2 | e
public boolean endsWith(String suffix)
5 G5 W0 t, }7 \ h/ v1 A判断一个字符串是否以suffix字符串结尾;
8 Z: |) ] }, C! c$ ?# z# {public String toUpperCase()
5 \& q+ W0 [) x! R5 c0 B+ ?返回一个字符串为该字符串的大写形式;/ b% W! x2 ]- E7 F4 Y
public String toLowerCase()# B! {% n( m$ m
返回一个字符串为该字符串的小写形式
% x% {, C8 H" L( Xpublic String substring(int beginIndex)0 b+ k' o0 d9 H: |/ X
返回该字符串从beginIndex开始到结尾的子字符串;
- W. s i: B. V' f% fpublic String substring(int beginIndex,int endIndex)9 D9 o; U1 E8 u4 z8 u
返回该字符串从beginIndex开始到endsIndex结尾的子字符串! W' Y3 j$ m c8 ~/ R
public String trim()3 ~& G0 G* n! G0 c! K5 Z3 F
返回该字符串去掉开头和结尾空格后的字符串
% c m; `) Q: Gpublic String[] split(String regex)
! e% s0 t9 l# P" V" @将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组
3 n' C. O$ t6 b2 q4 k# ]# Z# ^7 _- t实例: ! ?5 c3 o1 W1 }8 E9 J
public class SplitDemo{, R2 k8 X! k: ~ m. t
public static void main (String[] args) {
' o3 _, B' {+ P, p. z' O; i8 {# x3 [4 t1 J5 V# B
String date = "2008/09/10";# c9 O% i- \! k% K, w/ v- G, ?
String[ ] dateAfterSplit= new String[3];% ]3 X t7 Z5 \2 E+ Y- G, n
dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。
' b1 {; X4 |/ d8 J8 A$ c8 a, F6 `! y' w* x
for(int i=0;i<dateAfterSplit.length;i++)5 m* F9 J% I1 v8 p! i5 D
System.out.print(dateAfterSplit+" ");
( {0 D! v% Q" g- p1 o) | }
2 f# N; N5 P6 G}
* k4 K6 W; N1 u6 ~2 [7 C! }0 Z. ~- ]9 Q5 z/ n5 _
运行结果:2008 09 10 //结果为分割后的3个字符串1 Y A9 g* x1 f9 ^4 c+ K% \/ V: ]
9 u4 s P8 j! M( Z- e实例:
; e+ m4 r. Q1 ^% i xTestString1.java:4 p7 N' Q4 M! A- {1 ]; f
程序代码# s) a7 l5 x6 i
public class TestString1/ ]1 D5 T0 t h# C z
{
0 h) S3 [, v# l, {* Y: N! i( n' v- A public static void main(String args[]) {" P; t# x! @) D
String s1 = "Hello World" ;/ D) \" l9 {) `
String s2 = "hello world" ;0 c2 R6 W0 D5 @1 M
System.out.println(s1.charAt(1)) ;
N/ f! U% E1 f8 X) x: t' A System.out.println(s2.length()) ;
- E! R* q. n+ u d6 K2 n D System.out.println(s1.indexOf("World")) ;
, u6 b: Q7 T" Y, }$ p9 b" ~ System.out.println(s2.indexOf("World")) ;9 p: W0 y( z. R! x
System.out.println(s1.equals(s2)) ;
% a+ M d0 F/ k2 e7 M, @8 j& K7 Z System.out.println(s1.equalsIgnoreCase(s2)) ;0 s6 h+ F. p( ^7 B, [3 }& f
, w& t1 C/ u5 b. b( w, f5 C' b$ l" ^
String s = "我是J2EE程序员" ; s, ^1 E. d4 C! R) _
String sr = s.replace('我','你') ;
% C6 `1 k; p4 f* X4 }$ P# D" _ System.out.println(sr) ;7 U3 O) K2 `( \
}# M3 v# V$ w, ^. w
}
) F+ d5 Z1 x- l7 H) \5 H% r7 v, w% X
TestString2.java:
% S# D6 j6 V/ c/ e7 l程序代码
6 V' ~! U- Y: X0 k6 U2 O( F
0 _8 ~7 L q) wpublic class TestString2
, ?, I O M+ r3 L7 ]8 w+ ]! j{: u2 t) A+ Q, j; U; t
public static void main(String args[]) {
3 Q4 `" u) N2 k5 o String s = "Welcome to Java World!" ;9 n9 R' y! G/ S0 P- o$ I" Z: C
String s2 = " magci " ;' z5 I* O* L5 Q0 o; q t
System.out.println(s.startsWith("Welcome")) ;
1 A0 g9 k I( {! O System.out.println(s.endsWith("World")) ;! y1 b8 ^. y7 `$ J2 j/ y
String sL = s.toLowerCase() ;3 I& e4 G5 d6 F2 u; ]8 _
String sU = s.toUpperCase() ;
2 V' G4 r/ X' u System.out.println(sL) ;
& b1 v8 r' _2 F- o3 j System.out.println(sU) ;
- k0 x4 Z: R1 {; E7 W, A String subS = s.substring(11) ;6 O( x. ]( j; u$ w$ z- F! ~$ O1 q, d
System.out.println(subS) ;' b8 V$ C9 w& }
String s1NoSp = s2.trim() ;5 x) R v2 H/ C# K
System.out.println(s1NoSp) ;0 f0 G0 j, }, k
}
9 ]9 |( h6 c2 r1 }7 H8 k
# d: v+ z* d0 T |
|