该用户从未签到
|
String : 字符串类型
, |# s9 N- S: H- J- ?: I9 a% y6 L- |% a; K# b$ R
一、构造函数
8 H7 V, S7 T: h+ O7 Z String(byte[ ] bytes):通过byte数组构造字符串对象。, C/ x3 }) b3 e% s# g- A$ R; O
String(char[ ] value):通过char数组构造字符串对象。, G0 e4 M% j% J! H! F
String(Sting original):构造一个original的副本。即:拷贝一个original。6 P+ a* F1 o) E8 s" X9 X' ^& G
String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。
) f! q8 g9 {* X* P- q/ d3 z1 L例如:8 B4 B9 B" R: d2 p' `# o# }
byte[] b = {'a','b','c','d','e','f','g','h','i','j'};
3 G" |1 D0 O* n2 j- [( T5 g char[] c = {'0','1','2','3','4','5','6','7','8','9'};$ u" X k0 r4 t& }& u; L
String sb = new String(b); //abcdefghij
0 _. L" F2 n" Q5 o8 e6 q String sb_sub = new String(b,3,2); //de- d( N& B8 g' V
String sc = new String(c); //0123456789
) }& z. ~5 k0 G- \ I" z String sc_sub = new String(c,3,2); //34 B- M% Q; N/ R7 p) E
String sb_copy = new String(sb); //abcdefghij
Q2 Z$ Q- f$ F3 c System.out.println("sb:"+sb);
8 h* d3 p! F- H6 E* j System.out.println("sb_sub:"+sb_sub);# m+ x1 e8 H Y- y" J5 M1 p3 H" \" d
System.out.println("sc:"+sc);
1 T6 @3 ]! E" A1 x System.out.println("sc_sub:"+sc_sub);3 M3 Y: T) P) @; U9 ]
System.out.println("sb_copy:"+sb_copy);
( D5 m% b; `' ~% N# h 输出结果:sb:abcdefghij
" N* p- I( b6 j8 T" r" { sb_sub:de
* g5 j- G0 @4 G' K sc:01234567897 x! @2 x6 G) m
sc_sub:34! `. H: z4 x9 O
sb_copy:abcdefghij
+ D: z& u; z$ R. e5 \- o" f5 Z; N* v! j! j7 X! H
二、方法:
5 p2 @+ X3 M4 K( n
6 } V" q; i1 u% `/ A 说明:①、所有方法均为public。
0 ]3 v p. M7 s8 t ②、书写格式: [修饰符] <返回类型><方法名([参数列表])>3 A% O p0 a* C$ B$ Y$ C: ?, v
; M% c* q3 O. T! d4 \ 例如:static int parseInt(String s)
* `; n# {! E3 P% c0 |: ?8 e* C9 t/ R/ D 表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。
; \5 h3 W: J! k7 I Z4 P. M4 N8 |9 j! W
1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。' d1 \( \9 ?1 O3 o @% W: _9 I+ M
7 @6 ?0 _/ ~! N5 F1 o( J
2 ^! Q! w1 [1 v( H3 ]# Y: }- P: @3 n, }# [1 W4 n3 D/ T9 o
例如:String s = new String("abcdefghijklmnopqrstuvwxyz");
, |2 e* E0 f5 l6 d4 X3 S2 W# W System.out.println("s.charAt(5): " + s.charAt(5) );6 s5 z, R0 H ` e
结果为: s.charAt(5): f
0 W( z8 S5 w( ~5 R8 Q: d8 d2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
# t; H9 L$ [( V& Y! y% Y5 Z3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。/ j7 B' O: G) B( t2 n
例如:String s1 = new String("abcdefghijklmn");
/ }: e2 ^' ]+ ]5 S" R7 Q, E$ H& C String s2 = new String("abcdefghij");6 K, Q" _% F* E _* R8 _8 e& d
String s3 = new String("abcdefghijalmn");/ ?# n; `0 q. E* K3 B# }/ {# R
System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差. Y% g" s/ } P% I) z- d# ?
System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差
# ~; R2 F/ @/ _: j 结果为:s1.compareTo(s2): 45 S" U$ T& {; `! r6 Z
s1.compareTo(s3): 10
( ~+ P! p, x' J7 g$ _9 O4. String concat(String str) :将该String对象与str连接在一起。/ j2 V! E" m9 y
5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。
" `- Y; r) X. I6. static String copyValueOf(char[] data) :3 A* { d+ N" V) g* C5 [ S! R
7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。
' b0 f. a: D7 X: o9 X% E! {2 v8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。
; Q2 o7 J/ }# @* Q 例如:String s1 = new String("abcdefghij");
0 D& }4 z; {7 U4 S/ `. ^ String s2 = new String("ghij");
3 R" H2 T1 g& C; ] System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );
! X2 \4 }0 N# o P% T( ]# @6 a( F/ t 结果为:s1.endsWith(s2): true) ^# F6 D! W+ Y; ^- \+ D
9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。
; {- ?: E l& r, N7 F$ ~; E% J10. byte[] getBytes() :将该String对象转换成byte数组。0 ]: d8 `+ I, g3 y/ ~+ T$ Q
11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。
* {- ~7 K3 T* `$ f7 n 例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!
% W |4 h& a+ N3 e1 | String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!& m( d y0 o }
System.out.println( s1 );
: A" Z ]6 m; f l 结果为:I love you!
; [$ {' Q/ n- N9 x5 m/ R$ \12. int hashCode() :返回当前字符的哈希表码。
) S5 @) d& {, S2 {13. int indexOf(int ch) :只找第一个匹配字符位置。
# G/ x# x- m5 Y& P4 }14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。3 ~- ] |4 R9 Z+ D
15. int indexOf(String str) :只找第一个匹配字符串位置。% W1 C& [3 [ r/ }) m# z% k
16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。9 l" c6 ?, l _
例如:String s = new String("write once, run anywhere!");% ~. x# R; C% Y& A4 ~- L
String ss = new String("run");5 x4 U& K2 c1 p8 K# Q. }3 e. ?
System.out.println("s.indexOf('r'): " + s.indexOf('r') );' y- v2 S* x9 K; v
System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );
* E/ u/ A, D5 B) b System.out.println("s.indexOf(ss): " + s.indexOf(ss) );- a6 J0 c0 Q& D/ i
结果为:s.indexOf('r'): 1! ~9 p2 `1 \/ C2 |* ~
s.indexOf('r',2): 12" _# _, T B9 q, h" t4 N
s.indexOf(ss): 12" h) V7 [) P( J2 u
17. int lastIndexOf(int ch)
/ L( W6 m% Z- U' E1 U2 k18. int lastIndexOf(int ch, int fromIndex)/ e) }; S/ M- C$ }8 g" t7 C
19. int lastIndexOf(String str)
: H8 Z& I5 J' e& B20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。
7 E8 ]) W" |" a5 t/ opublic class CompareToDemo {# F9 p: U7 l' K* M, I7 l
public static void main (String[] args) {
, R3 G" O7 \2 F. n6 |3 b String s1 = new String("acbdebfg");$ U7 l/ y' z K# s" V# b- h
3 ?; p0 D& L6 b% R. o! N$ X, @
System.out.println(s1.lastIndexOf((int)'b',7));
2 o" V4 {7 ^5 ~. d0 c }! e; Q( \4 l- ~. n; Q3 F
}
$ U; l5 A1 F: B' c' s1 e$ }运行结果:5/ v) a" J& ~2 @+ |. s
(其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)
5 k+ @5 E: D' o) }" W. P2 Q' G; _6 S/ n
L! k% W: v9 r7 f" C [% a7 P
21. int length() :返回当前字符串长度。8 U5 t F k2 `
22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。
: j. n& b5 @, }" O' c% B5 Q23. boolean startsWith(String prefix) :该String对象是否以prefix开始。! W6 C h \- g
24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。# P6 y/ Y+ _1 \9 F1 q
例如:String s = new String("write once, run anywhere!");' T g3 N4 L$ N4 G1 S. G6 a; ^: y
String ss = new String("write");
' v- C: f3 b. E3 G7 t' b( V. d- R String sss = new String("once");
+ T0 b- v: u, f# h8 ~6 Z System.out.println("s.startsWith(ss): " + s.startsWith(ss) );
/ V+ U* k y5 k# p9 i System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );& [# _6 H, b+ o7 \+ h* R& x. E
结果为:s.startsWith(ss): true
9 O+ }3 h1 G; ?6 r6 O, t s.startsWith(sss,6): true) ^/ ^( B+ W) S @1 Z1 R
25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。
$ L( T1 U- i9 P: Q- R26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。$ {# |( R$ m! w6 D) m& ^
27. char[ ] toCharArray() :将该String对象转换成char数组。
; E1 X" ], _8 I5 E" w28. String toLowerCase() :将字符串转换成小写。
, b9 a. O" O+ F+ s' [" o# i' ^6 L/ R) O29. String toUpperCase() :将字符串转换成大写。2 W$ d* I; j; m$ W
例如:String s = new String("java.lang.Class String"); F% ?; b" g+ J8 ?3 v% c
System.out.println("s.toUpperCase(): " + s.toUpperCase() );
; e; j9 Q5 H$ q System.out.println("s.toLowerCase(): " + s.toLowerCase() );
0 G; M& d% ~( \ 结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING
" y/ a1 S; n: V5 C s.toLowerCase(): java.lang.class string8 A+ {! }! [! G- |8 t% x
30. static String valueOf(boolean b)
9 f. Q1 i9 _/ h' q" u8 ^31. static String valueOf(char c)* }- F* Y3 e5 f1 p
32. static String valueOf(char[] data)7 _. T& y! q# R+ y
33. static String valueOf(char[] data, int offset, int count); T! o4 d4 H8 S) O3 v- J0 e2 C
34. static String valueOf(double d)4 T$ e2 i/ a7 V2 x }
35. static String valueOf(float f)
& q% O# E Y B36. static String valueOf(int i); D" \2 w- g6 e( a
37. static String valueOf(long l)
. y) w5 v+ G; N6 \- B% j38. static String valueOf(Object obj)
* {& ]# b2 [0 b4 O: w1 y- I2 N2 { 以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。1 x+ j' P) j( M
8 \+ @7 H& o) f/ a u: S/ t- S, ?1 Q) ]8 Y& G; @, t( ~
9 x& ~8 K# ?. X3 R: d, J- x9 M$ h+ ?
- A* N/ [1 N2 l4 l% ~
$ [- S8 u8 w7 e2 A# _+ @Java中String类的常用方法:5 C9 e0 M6 k3 |4 a
7 ^2 g% Z+ J& {0 ?" o f: U% O0 A/ lpublic char charAt(int index)( v0 q) u% i! _9 }" V
返回字符串中第index个字符;9 v- f( A% M$ {, m
public int length()6 z" X, b8 i2 V* F* j. r
返回字符串的长度;
! h0 {) u) R/ M( @public int indexOf(String str)# q6 H: y- ^! z8 {7 L
返回字符串中第一次出现str的位置;, S* l- g0 i. ]# \, ]0 \: g) h
public int indexOf(String str,int fromIndex)9 n. M! T9 k. ]% a1 J% ?, }
返回字符串从fromIndex开始第一次出现str的位置;
+ j/ {, G+ K- v! G( Npublic boolean equalsIgnoreCase(String another)
5 B5 W6 r8 w4 }& P) U% |比较字符串与another是否一样(忽略大小写);
6 M' G2 @6 p9 Lpublic String replace(char oldchar,char newChar)) F, u# V3 f+ W
在字符串中用newChar字符替换oldChar字符
4 o8 P# u* G1 J, @, [public boolean startsWith(String prefix)
* P+ c5 i% ~9 H& ]) J3 C判断字符串是否以prefix字符串开头;5 _, F) q7 Q) w; y: x
public boolean endsWith(String suffix)
: J6 a: a8 E, E; V9 @$ A判断一个字符串是否以suffix字符串结尾;/ P8 s. { m- W2 b, K r/ H/ U# [
public String toUpperCase()
1 w3 |2 m7 v! l6 Y [6 h返回一个字符串为该字符串的大写形式;! [* }7 A2 S% B
public String toLowerCase()9 T) z8 o* {" o1 d0 `% I- c0 {
返回一个字符串为该字符串的小写形式$ [" r8 e( ? X6 H. }
public String substring(int beginIndex)
+ M# C! f% s; R返回该字符串从beginIndex开始到结尾的子字符串;: ~. \5 F; o2 }( C
public String substring(int beginIndex,int endIndex)
2 U& |. u9 ?$ G1 y: L3 n返回该字符串从beginIndex开始到endsIndex结尾的子字符串; S# v/ `( s; P W: J+ _! j6 ?
public String trim()/ j4 r0 R7 B8 e, r8 c7 G7 y
返回该字符串去掉开头和结尾空格后的字符串
" Q5 N. P. I" ? `6 Opublic String[] split(String regex)
) E& n& G" k; a! W! D2 d/ J将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组
) Y* E* v5 A9 \实例: , J1 v# B# b& M" m+ [( y& b" V/ K
public class SplitDemo{
2 O$ a4 l* p6 J' T0 M5 D& M" d public static void main (String[] args) {
: {1 |( V1 O1 e, p K( q$ [8 l3 U1 b- K
String date = "2008/09/10";0 \0 ^/ d v5 B- \* ^
String[ ] dateAfterSplit= new String[3];
# o9 t* Q) Y9 B dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。8 o$ k; i9 R9 u2 r
H c. S+ \. [7 [1 `, Y
for(int i=0;i<dateAfterSplit.length;i++)
R% @& u. u* b3 w6 e% \ System.out.print(dateAfterSplit+" ");
; u+ }: A+ p3 v9 D7 d# v }
- U% v% E, K* M6 c}- ^& d# H2 R8 B6 b' w
, P. _3 p8 Z6 ^! f% G
运行结果:2008 09 10 //结果为分割后的3个字符串" A7 C/ ~) t% q$ h4 B( P
1 ^6 T7 P9 Q! v8 K- y
实例:
f; U* ~* q/ m, c9 r# wTestString1.java:$ n/ R$ y* a, s9 R+ s
程序代码7 F* N5 {$ Z; J' f9 l* [* ^. a- |
public class TestString1
5 u6 D V- q. w% P+ O{+ O) `0 K" p; r" @2 ]' q
public static void main(String args[]) {& V* ~- ^9 A' p2 B
String s1 = "Hello World" ;& Q& N7 e4 B* ^1 p% P ]# V U
String s2 = "hello world" ;
; {9 t; P, j2 [6 l+ K+ U p' ^ System.out.println(s1.charAt(1)) ;
2 m% D4 _0 d% I% a0 d System.out.println(s2.length()) ;
; e9 T& j+ p1 k; g7 J* f System.out.println(s1.indexOf("World")) ;. Z7 P: Z: Q. y% h/ `& g# A2 D
System.out.println(s2.indexOf("World")) ;
# d4 ?& B4 ~7 `; K System.out.println(s1.equals(s2)) ;, b+ d7 F& m: z- @) `7 P
System.out.println(s1.equalsIgnoreCase(s2)) ;+ |& G5 D( ^0 M, l# P
, J/ I) f0 l" K! L( t B
String s = "我是J2EE程序员" ;
8 A" ]3 |$ U# J& f String sr = s.replace('我','你') ;6 U+ K$ s# f0 H/ G& C* r
System.out.println(sr) ;
3 E6 t, w( S$ F }
* }. E' x4 V" _}+ u: s" Y* Z4 {5 D
3 i4 A4 m' g' Z" {9 {$ |- U3 PTestString2.java:
$ k6 ]6 Q& _6 f( x! ]7 a程序代码
' I! m& Q# @" s+ s$ i5 A4 ^% J, J, {- R. C$ n! n9 T- Z4 r3 C
public class TestString2$ W" a# l' ?4 I3 e+ Z9 r
{9 H/ T% y& O* n0 F+ z: @4 A
public static void main(String args[]) {
: ^: F' t0 c1 R% c String s = "Welcome to Java World!" ;
! K4 p' } E( M+ y: t: ?8 p String s2 = " magci " ;; \8 l; r( y! S/ k
System.out.println(s.startsWith("Welcome")) ;+ C @# p8 B1 X) q, g, }. c
System.out.println(s.endsWith("World")) ;
# x) N' V0 _1 B" v( [ String sL = s.toLowerCase() ;6 G% o- v0 S* [* O: Z' p# Z
String sU = s.toUpperCase() ;
* B0 R# R. F5 e. A- }2 r& C System.out.println(sL) ;
: R0 t, a) b M# Z( f3 X System.out.println(sU) ;5 p, `: \/ S$ j' r; @' a
String subS = s.substring(11) ;' P: N1 ~/ A# c& S5 O) Q# p: U
System.out.println(subS) ;
5 O' l; R7 }$ [8 w& b String s1NoSp = s2.trim() ;
2 D# A5 E8 M2 P4 J4 f: t G5 ~- i- W System.out.println(s1NoSp) ;, c, \) ^5 Q8 L* g
}
% l6 T0 ^* `7 ?* b
2 V) S; r, [# S& {8 ?% m$ I |
|