5 Q' L+ c) @( F% G, S1 f4 d/ l一、构造函数& ?7 a* X$ I8 c( a7 j/ R j0 e k
String(byte[ ] bytes):通过byte数组构造字符串对象。3 o& W* l# w3 h4 i; {) l- i
String(char[ ] value):通过char数组构造字符串对象。4 ^7 }1 _! |/ G! z {) b9 G
String(Sting original):构造一个original的副本。即:拷贝一个original。 7 z0 c, k0 D$ `7 [5 C w" h String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。 7 W7 C0 S$ S7 U$ B& y4 O2 G例如: ! W3 K1 n5 L$ v1 s/ k6 |! ^ byte[] b = {'a','b','c','d','e','f','g','h','i','j'};# c1 C$ w2 ?$ O+ A
char[] c = {'0','1','2','3','4','5','6','7','8','9'}; & J3 X* i# [& V$ d String sb = new String(b); //abcdefghij* n+ |# w: m5 P4 [4 Q
String sb_sub = new String(b,3,2); //de+ ?' m$ N# U* r7 b0 h o2 n; H$ O& P
String sc = new String(c); //0123456789 / t, N. d) O% L! [ String sc_sub = new String(c,3,2); //34& C) p9 f0 k: j
String sb_copy = new String(sb); //abcdefghij / v9 B: H3 u; D2 ^/ v* M. @ System.out.println("sb:"+sb); ' {$ r; L# O/ f& X, w System.out.println("sb_sub:"+sb_sub);5 u$ ~) q f& C1 s
System.out.println("sc:"+sc); : q4 B( I4 V+ w& {2 { System.out.println("sc_sub:"+sc_sub);7 f- h6 I* H. K+ w* A% }
System.out.println("sb_copy:"+sb_copy); + {' T: C/ [1 P9 W z e( } 输出结果:sb:abcdefghij 0 K- t, J* E) g2 R$ w sb_sub:de & v4 j. {) F3 o5 X. V sc:01234567897 l% L) g# c- V; B
sc_sub:34! n1 d' u" j- Z: u% `
sb_copy:abcdefghij / {/ u, W0 V$ H/ \ b F1 T: O& q; [6 n4 |/ }
二、方法:4 m7 D( {" Y" |3 [; q& M
+ ?# N% e& `( M2 e' B 说明:①、所有方法均为public。 / y% ~) A/ n1 s: V8 i/ T$ F ②、书写格式: [修饰符] <返回类型><方法名([参数列表])> ' O* B. ^- s' v+ o6 L- k7 R! Z4 S. M2 l
例如:static int parseInt(String s)3 u. o' G- Z+ t- [ o
表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。$ C2 K6 ?) z. r0 W# T
+ B2 G+ _; O$ E; H6 O; J! x; }1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。 5 Y1 D# t. G& }2 [2 ~% L2 B+ x * @: t4 Y" O0 A+ J: V* m ) n' ~2 Y. I6 e# b4 O) }. a; F0 e& i3 g, o( u
例如:String s = new String("abcdefghijklmnopqrstuvwxyz"); 2 n% |. Y# p) k( r# d" C. z System.out.println("s.charAt(5): " + s.charAt(5) ); ( g7 R6 \8 a2 L# Z 结果为: s.charAt(5): f+ F6 `8 D! R# ^4 Q9 H2 C' y
2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。& j0 l$ e g8 J+ H
3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。 1 x. l2 C' e! c 例如:String s1 = new String("abcdefghijklmn"); , j. y0 _9 d F String s2 = new String("abcdefghij"); 0 P- O3 n3 _# C+ V' x( R$ P String s3 = new String("abcdefghijalmn"); 5 G, ]7 T: v1 J0 }8 O ?8 k, f System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差' n- ]; ]8 F. S: D+ P3 M
System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差$ Y) j, p* K' Y/ t v+ a
结果为:s1.compareTo(s2): 4 8 C8 k) E0 ^ v4 u+ |/ ^ s1.compareTo(s3): 10 & m& T+ }) A* c4. String concat(String str) :将该String对象与str连接在一起。 5 d1 T! [- E7 ?: z; d% Z7 B! o5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。 ! |# k3 B& u( T: S9 X+ e- ?! P6. static String copyValueOf(char[] data) :9 v7 v: D6 a% B: r5 d V) v. X
7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。6 _, M( h: \& p5 I U% L
8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。 ; ?. l9 c" T$ O p 例如:String s1 = new String("abcdefghij");" Z* H, ~8 z9 |. W
String s2 = new String("ghij"); 7 N. p) Q+ [% Z* T System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) ); " \# `5 Y5 V: z! a. y9 | 结果为:s1.endsWith(s2): true : C- n; z1 L% K6 ~9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。 . d P X( e& u9 y# P& i' d* ` s10. byte[] getBytes() :将该String对象转换成byte数组。7 b. z: r5 a# S% t: d; |: v, u
11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。 & ^# s- j/ r- H' J) U5 y( T n! j# t 例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her! 1 N3 T$ P( G7 V5 X& k String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you! 4 z' Y) n- g5 D& f( ~, V. K1 y. c' Z System.out.println( s1 );$ y% m' A# I8 A" H
结果为:I love you!" _0 L! i$ x0 k. h
12. int hashCode() :返回当前字符的哈希表码。* |6 p% B6 i+ t8 o5 t# c% Y& v
13. int indexOf(int ch) :只找第一个匹配字符位置。7 H4 h/ o: T- L' B' J% {1 g. w
14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。 3 l; j5 E @$ s' X, n1 B' \15. int indexOf(String str) :只找第一个匹配字符串位置。4 x" J ?+ v2 j; s# p
16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。' l0 n- U4 y9 O( r8 I. x
例如:String s = new String("write once, run anywhere!");& ]. k" D; g; C
String ss = new String("run");3 m2 w: S# ^3 |
System.out.println("s.indexOf('r'): " + s.indexOf('r') );4 }) y: T+ \1 C, f
System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) ); / u* f( Y8 }0 _4 |& N& c System.out.println("s.indexOf(ss): " + s.indexOf(ss) ); % l( @* O7 M8 a' W/ M: q 结果为:s.indexOf('r'): 1 $ A( \7 K0 D4 q s.indexOf('r',2): 120 [. |% X, u4 z( v# P; f0 j: b- |
s.indexOf(ss): 12 - Y! V$ d2 X' Z% v/ i17. int lastIndexOf(int ch): k+ S4 @2 [1 L' s4 [5 C
18. int lastIndexOf(int ch, int fromIndex) 1 [2 x, U5 T; ]! X* t/ f19. int lastIndexOf(String str). ]2 H8 }& I: s
20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。 - |3 c! @3 Q! b8 ~" O1 Spublic class CompareToDemo {+ g# J* p; v+ W# m1 A
public static void main (String[] args) { . r8 L+ z( p) I String s1 = new String("acbdebfg");+ u: J+ D) j" X' g+ w
: `8 K. z3 L/ q System.out.println(s1.lastIndexOf((int)'b',7));5 H- I0 K6 ~$ {+ q
} A0 h) d/ R4 l
} 4 _7 ~- U) R& e5 Q3 [. E, p0 j; [* k运行结果:5 4 M- D% D- @) P" Z8 {* C! R4 k D (其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)( H9 @* Y, t& `- e7 a
- R& W! L* p4 P+ q: P& j
; d3 I6 r' ?: p7 x; m* d0 i, s
21. int length() :返回当前字符串长度。 7 ?4 [) D+ v n4 y7 X22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。7 b8 d) L9 ?) q: O5 S/ L
23. boolean startsWith(String prefix) :该String对象是否以prefix开始。 + E( l, V, |* [! D/ t% I# S. h/ B24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。 . `. ?& z9 z# S- A6 j 例如:String s = new String("write once, run anywhere!"); " V$ r2 s$ w4 j* H+ b- [3 A2 |0 M String ss = new String("write"); + `. g: G9 k' L+ a! g5 m String sss = new String("once");) n" X# S8 t( l1 O
System.out.println("s.startsWith(ss): " + s.startsWith(ss) ); ) @7 D% h. U2 R/ r& v System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );+ Z4 D1 [+ J* V6 u
结果为:s.startsWith(ss): true: }" ]& B) c0 L7 \. z
s.startsWith(sss,6): true) B, F# F* K/ w, {8 ^5 A
25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。 " D6 |( e6 v4 H8 f) m2 |0 S. Z3 u% t$ o26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。 ' y+ b( t& |6 e! r8 \3 j27. char[ ] toCharArray() :将该String对象转换成char数组。# [ |. R6 r* B0 J4 S8 m% j
28. String toLowerCase() :将字符串转换成小写。 & b7 @5 ^9 G6 X7 W$ t29. String toUpperCase() :将字符串转换成大写。 7 `7 i5 w/ Z0 v/ C2 M( ? 例如:String s = new String("java.lang.Class String");3 S: y- e9 z* B& @
System.out.println("s.toUpperCase(): " + s.toUpperCase() ); ; X. {' \) T2 |" [' D" u" n( n System.out.println("s.toLowerCase(): " + s.toLowerCase() ); $ N7 D- T" S+ a- z8 { 结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING* j( V* W" }+ R( t9 @
s.toLowerCase(): java.lang.class string 4 E W" s6 g# Q1 s30. static String valueOf(boolean b)% z! s% O, V* H& I: e1 M
31. static String valueOf(char c) 1 E: ~/ u! \, c32. static String valueOf(char[] data)' M2 @$ E- z; t( q' @6 ^. V8 a+ ?
33. static String valueOf(char[] data, int offset, int count), Q% M* e- ~! m4 {, |
34. static String valueOf(double d)7 f2 u- n* ?7 j& l- s
35. static String valueOf(float f)0 J9 X4 e; n* E/ M* n2 Q& Z! f
36. static String valueOf(int i) 8 ~0 X! }% y4 W( _* {) k* H( t( X3 J37. static String valueOf(long l) ( c G8 y) G# \. @4 S7 m# P: C38. static String valueOf(Object obj)- K. z* ^4 y+ J8 d3 B+ |
以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。2 Y5 V. X% k' Z: a W6 o
! J. c$ F& P/ g6 o
. s/ u6 n! o0 m n8 C/ ^
. w8 r4 N! f) E6 ^2 a/ U' O ; u) ^' q. I4 d8 o4 X! A6 }& j - C4 a: @4 F1 p2 p; k; R9 wJava中String类的常用方法: ; h: F. Z3 ]" C( d% p/ n3 a% a( b% Q( D: @ w) ?% o. h, ]$ i% {. a3 J
public char charAt(int index)8 I7 } Q/ V/ t' `2 K
返回字符串中第index个字符;. o, e, h! a3 t. N4 p% E+ F0 e
public int length() : j' g1 ?( M' g( z4 s返回字符串的长度;$ d4 c9 d. |8 M" \; A
public int indexOf(String str)3 z! ?/ N' ]# w& ], l' a" E" i
返回字符串中第一次出现str的位置;* U& V7 B `9 j7 M) f. x
public int indexOf(String str,int fromIndex) / F& G/ j3 i- m+ N" l- X. A返回字符串从fromIndex开始第一次出现str的位置; 6 f3 ~' x; S9 ^6 ^( Npublic boolean equalsIgnoreCase(String another)5 _9 f: q: o" E2 I0 V( s
比较字符串与another是否一样(忽略大小写); : ?4 G0 d9 d( E1 Y6 npublic String replace(char oldchar,char newChar) , u; V- H% s( Q4 S在字符串中用newChar字符替换oldChar字符) U& o9 c: q0 O7 w
public boolean startsWith(String prefix) 7 c, A* r% k8 y6 p判断字符串是否以prefix字符串开头;3 [6 R% H @8 o/ ]
public boolean endsWith(String suffix): y" h) T$ X$ X* X+ R8 Z
判断一个字符串是否以suffix字符串结尾; ! @/ N- \% w( i7 Q( \/ ]public String toUpperCase() ( L/ n/ x) A7 X0 m& N i/ k返回一个字符串为该字符串的大写形式; " j3 G; A @/ f8 O/ a* j+ }8 ?public String toLowerCase() + n$ b9 b0 T! I9 Z返回一个字符串为该字符串的小写形式. Z$ E9 l: Y) W/ A; Z
public String substring(int beginIndex) 0 Z E& W% D! w: _* d" c返回该字符串从beginIndex开始到结尾的子字符串;8 W( z. i3 Z( [3 d4 B9 h
public String substring(int beginIndex,int endIndex) ; s0 }2 x0 { H# y0 f7 Q返回该字符串从beginIndex开始到endsIndex结尾的子字符串 * M$ g* N# T fpublic String trim() ) b3 v3 T* O& ]; V* _( z返回该字符串去掉开头和结尾空格后的字符串6 z; I8 x0 e7 r" Y {! A& v: {
public String[] split(String regex) . j' N9 @% \9 d" ] D3 O' c将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组 d% c8 J- K# N8 r: ]( P3 \实例: t$ s y8 Y K1 F" }public class SplitDemo{% _% o- T$ i0 T/ a
public static void main (String[] args) {" |# X1 Z+ T1 X T( |4 |, V n
6 |% _* J! y' S+ k0 Z( @# K String date = "2008/09/10";1 }1 b/ U% S& i5 _. d( u7 E9 o3 A4 B, f
String[ ] dateAfterSplit= new String[3];0 h/ [! s3 o$ ~4 y& S7 ~0 R
dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。" ^* O* {0 B. F c- h# e
4 S Q0 \4 C2 k: i3 `/ \# S! u
for(int i=0;i<dateAfterSplit.length;i++)* g+ y4 l0 F* H6 E* B
System.out.print(dateAfterSplit+" ");6 L0 H+ n0 y; s0 a/ r$ j8 E2 `
}5 t( W& c# S9 {1 ?4 S* l, B% v
} ; F, m; r' `" n+ u. l# w e 9 X9 @) j1 T! f0 i# y7 a# P运行结果:2008 09 10 //结果为分割后的3个字符串/ f) Y0 w' O/ f, I8 q
, a( {( }% A0 J/ t+ s: N实例:0 L/ Y) \* o2 I9 k( t5 _; ]/ O
TestString1.java: 3 m! T' P8 n" @/ e程序代码- ]; W+ B5 q9 V6 a ^
public class TestString1 - r; X/ V1 h# S& K# \{, X5 h1 Z+ m- r, V. L7 P1 O# C
public static void main(String args[]) { 1 D4 d4 |( Q/ a! P I& q String s1 = "Hello World" ; ' [# _ i0 T, k H) ~' J& o String s2 = "hello world" ;! S! P9 X5 W. M3 m! _
System.out.println(s1.charAt(1)) ; # X n- c2 ^* v9 B! v System.out.println(s2.length()) ; 7 d1 |% }. p) \) A System.out.println(s1.indexOf("World")) ;) K9 G& N) p6 u; A7 s& }8 c
System.out.println(s2.indexOf("World")) ;1 x+ |9 E- c' m' ]8 ]
System.out.println(s1.equals(s2)) ; : w8 [7 v/ b: {" T I System.out.println(s1.equalsIgnoreCase(s2)) ;4 A* q9 `. }) g
A/ v3 X1 ~$ h0 J0 l
String s = "我是J2EE程序员" ; . @* h7 e1 r/ T/ } String sr = s.replace('我','你') ;' {, P; W& r" k; h& Y
System.out.println(sr) ; ; {: }4 z N3 M } + J4 p l. G1 f' u6 b+ w}& L, ^) N5 W; G
$ I) k1 j' B* _4 a: I3 I
TestString2.java:- f! Y7 O! ~5 l
程序代码 9 P8 o# t( o. {& w* m% [# y9 F6 n; W* B0 f- A! c4 e
public class TestString2 ! X- ^& j% P+ C{ & k$ L' @# b1 ?% X4 F+ q( G public static void main(String args[]) {4 N' I) `7 [, P7 c3 o
String s = "Welcome to Java World!" ;# q% J. o/ i# y6 z
String s2 = " magci " ; $ ^! c& C, n s- {+ c System.out.println(s.startsWith("Welcome")) ;) u; [+ [0 z: M; J* L7 |4 D- {: @
System.out.println(s.endsWith("World")) ; . ^3 U9 D+ @, x. B4 z5 Z7 U String sL = s.toLowerCase() ; ( V' @: H) n3 S6 \* y" p String sU = s.toUpperCase() ; 3 h) w( I8 F' \" H! F2 i! h' k System.out.println(sL) ; 8 f/ Y/ j$ y: @6 r* k3 m* ]$ W# G System.out.println(sU) ; 1 W; I' G7 p0 k9 T; I* e String subS = s.substring(11) ;4 [) W* f3 f9 m4 w+ T6 c9 \
System.out.println(subS) ; 8 `) r0 T# H J& D% g n String s1NoSp = s2.trim() ;3 J" k5 L. z4 ]; l8 E
System.out.println(s1NoSp) ;1 a7 e" M5 K( ?+ }, Y
}! ?% u F6 [/ L9 z: H. I3 ~/ \7 ?
- j. g' q0 b9 ]2 W