该用户从未签到
|
String : 字符串类型
8 M* D' V2 T* v- l+ M( i2 Z- i- j+ C4 W" P& J$ p1 y
一、构造函数
$ a1 _9 C9 X0 C( a0 \. }+ | String(byte[ ] bytes):通过byte数组构造字符串对象。9 Y0 y6 P* \ {5 G h- S/ |! Q
String(char[ ] value):通过char数组构造字符串对象。) u% R4 c5 e, p. _- Y" }% T
String(Sting original):构造一个original的副本。即:拷贝一个original。4 a i5 _7 I }" K) y' Y
String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。
# r5 e3 k* _0 a" w例如:+ h2 Y: Z% a& Y7 l. N* K4 o
byte[] b = {'a','b','c','d','e','f','g','h','i','j'}; {0 V3 S. K f- n0 p* N
char[] c = {'0','1','2','3','4','5','6','7','8','9'};
7 b6 V( l! W4 Z) u4 w) q String sb = new String(b); //abcdefghij
0 v) s' v0 D. N ~# h String sb_sub = new String(b,3,2); //de
$ C. Z$ G. p; u8 g A6 V( ^$ q& |. p String sc = new String(c); //0123456789
8 j) H& }9 z# |5 A2 u4 u String sc_sub = new String(c,3,2); //344 A/ _6 f5 W. \9 q5 m- N# h
String sb_copy = new String(sb); //abcdefghij
8 g; l! v" f% m& x System.out.println("sb:"+sb);
- v! z5 {" c2 a( R4 ] System.out.println("sb_sub:"+sb_sub);
5 X p/ E0 C, F System.out.println("sc:"+sc);! }# z1 @1 B5 a" ~4 n
System.out.println("sc_sub:"+sc_sub);8 R" }" K5 U5 q6 C3 h
System.out.println("sb_copy:"+sb_copy);
$ @8 {( g4 k# _ 输出结果:sb:abcdefghij7 F+ F: S: L/ f4 L
sb_sub:de
2 R* D: A3 m ^2 x sc:01234567895 [2 T( P* x. Z/ ]; [& B! F
sc_sub:34
9 E4 L0 f- M* y L% w) {1 v, x sb_copy:abcdefghij
) a$ S9 s( d Z8 k- e$ c1 D% m3 R4 H5 `9 J
二、方法:
, A) C! C. [& y6 k7 b' _0 u3 G: N1 m3 Z, d
说明:①、所有方法均为public。 V. ^4 `3 O2 e7 W% r6 [2 q
②、书写格式: [修饰符] <返回类型><方法名([参数列表])>7 Y( t- e, L& Z* B! P* l
$ {! ]0 X: x- l: | 例如:static int parseInt(String s), D' K9 ~& s! X$ d* }( Y
表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。
4 q) S# Z. S# a- g5 k7 ^) ^0 [, P) M2 |9 W
1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。 y, H* t( [& t- F7 P
/ k+ `" X$ g* ~ g$ j
4 U3 s- a9 o; D& R& l( C1 j; x& j- T( ]- Q( q e U
例如:String s = new String("abcdefghijklmnopqrstuvwxyz");( g) m- @- b- w
System.out.println("s.charAt(5): " + s.charAt(5) );- Z7 H( D0 B( N. f; J- H
结果为: s.charAt(5): f
( f9 b; @& w; |& e4 Z9 n2 p3 t2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。3 @ c$ N4 z5 }* t, z% C
3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。
; x" e& x8 J5 |1 F 例如:String s1 = new String("abcdefghijklmn");& h" u [8 U3 {! Q9 C! C8 A* {/ ]
String s2 = new String("abcdefghij");
0 |% X9 J' `7 [* v9 ]3 G String s3 = new String("abcdefghijalmn");
7 P9 }! v0 y* k8 a% T# y+ ] System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差
$ y; K" n# ~; E; e System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差
- I5 d6 v9 f; m1 m4 k s& [3 Z6 |( n 结果为:s1.compareTo(s2): 4, f) U2 E1 i4 P8 U* Z. E4 V
s1.compareTo(s3): 10
& V; Y! j! Y3 y6 w4. String concat(String str) :将该String对象与str连接在一起。
8 V1 x) s* k7 D# {. N; c e* Y5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。* c5 {9 S w% h) l5 _
6. static String copyValueOf(char[] data) :1 h8 p h9 T8 ~, c# [
7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。
3 @6 G7 s* E+ u1 Z" [" l8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。
$ E! J1 i+ N' k1 g 例如:String s1 = new String("abcdefghij");
' a2 h% k! H! I/ p; |3 R2 @ String s2 = new String("ghij");
" L) E' b! d1 O System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );/ F$ i" ?% j- U" M" W6 K
结果为:s1.endsWith(s2): true( F' k4 q, v/ p
9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。- t* J n* T' N! S
10. byte[] getBytes() :将该String对象转换成byte数组。, E5 `' U# \ P0 B* N/ H
11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。
& N7 ^( G+ s) H/ G 例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!
% z6 {+ u3 U+ I! H. W( e [" p. ?, G5 B String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!. `: g0 h1 X$ e# t
System.out.println( s1 );4 |) ~! k. v [+ G# ]+ e: Z
结果为:I love you!
& n7 ^4 p/ D9 E8 |1 \5 O5 J12. int hashCode() :返回当前字符的哈希表码。
5 ^" N% ~4 T$ a9 d6 E13. int indexOf(int ch) :只找第一个匹配字符位置。
9 [) k) [$ z! _14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。
; K" y9 B; w6 L0 A! u# ^: j8 \15. int indexOf(String str) :只找第一个匹配字符串位置。& _4 r: x1 t! t
16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。
# W+ t6 c t7 V4 D( H! J3 y) B+ t 例如:String s = new String("write once, run anywhere!");
7 P6 T6 ]; t8 g4 n! N* ~ String ss = new String("run");
, `! {" x. _" G' |- |, E: o7 P, f System.out.println("s.indexOf('r'): " + s.indexOf('r') );% V, s- ]) m1 o, O& y
System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );
0 j" t) j$ |$ U g. X1 P. M System.out.println("s.indexOf(ss): " + s.indexOf(ss) );
! S3 m7 P$ `0 S3 \ 结果为:s.indexOf('r'): 1
; I, M# ^: J) I5 G s.indexOf('r',2): 12
0 v) `9 H: @2 ]" ^ T* D: f' L3 F s.indexOf(ss): 12
; W) r5 I y2 l6 g17. int lastIndexOf(int ch). U7 p2 `. O$ x& k* Q# @6 ]7 z
18. int lastIndexOf(int ch, int fromIndex)
7 E- \3 N* ^/ U$ ]6 |" e7 }19. int lastIndexOf(String str)8 W2 L9 B. U1 X( Y Z" N
20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。
0 I/ W* w9 H, N+ {- V5 ]public class CompareToDemo {
6 S8 o8 e! [+ \8 ?+ R _ public static void main (String[] args) {
+ ]& Y. V; V) k" h; `# p String s1 = new String("acbdebfg");
6 r6 V2 Q9 o; q" S" b
5 d9 L j2 D- {% S) o System.out.println(s1.lastIndexOf((int)'b',7));6 ?1 x4 K2 Q4 S% S4 \' D
}7 [8 o9 {0 P4 }
}. A3 T6 | h M# ^
运行结果:5, }9 q6 S8 n6 l6 {6 Q. v& v
(其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)
, O7 ?' s9 W/ G9 H$ K5 r4 `$ |" V4 x0 z# w
J5 l; r4 w' |& _) F2 ^21. int length() :返回当前字符串长度。
9 [" p& j% W' Q6 {: Z/ g/ J, L" j4 G22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。1 J8 R) g6 d& `* o" w. ?, D$ A
23. boolean startsWith(String prefix) :该String对象是否以prefix开始。
& `" p( A; i5 o7 G! [7 K9 N( y7 W24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。
# B! S- j: W$ d6 ?6 i( ]6 ]4 s' S 例如:String s = new String("write once, run anywhere!");
8 @: q, _5 Q6 } String ss = new String("write");0 Y1 j8 T$ m" K% b: f7 {3 O. C0 w+ }
String sss = new String("once");
' i( B2 w. h. n# ~+ `& S System.out.println("s.startsWith(ss): " + s.startsWith(ss) );8 R2 |: v# ^# C- D) y
System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );
2 d! }; k9 P8 {1 H. X6 I 结果为:s.startsWith(ss): true+ h0 x. G/ r. t( k: _
s.startsWith(sss,6): true; }4 ~6 i& ^* f
25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。
} Q E+ m# ^' O @+ X26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。1 a. ?3 ?: }2 X5 I
27. char[ ] toCharArray() :将该String对象转换成char数组。
6 j: n- U! x9 e$ q0 W28. String toLowerCase() :将字符串转换成小写。# ?0 r! ~, L' o0 z
29. String toUpperCase() :将字符串转换成大写。$ u3 W P! h4 g3 [# k# E
例如:String s = new String("java.lang.Class String");9 {0 m- Q# q6 m, l
System.out.println("s.toUpperCase(): " + s.toUpperCase() );
5 O$ L# w9 t$ H9 N3 e System.out.println("s.toLowerCase(): " + s.toLowerCase() );3 ? M4 |' Q& E. X+ M9 C/ c
结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING9 b. G+ v8 T. M
s.toLowerCase(): java.lang.class string
$ E, X5 Z; Y7 {! c5 g' G$ N30. static String valueOf(boolean b)
: t9 K7 |9 {' v$ D* n- s31. static String valueOf(char c)
7 q( P+ o- Z; Z6 M5 h32. static String valueOf(char[] data)
3 s* J" n& J {4 x: q) b% d+ o. t: P33. static String valueOf(char[] data, int offset, int count)' X# T* p% W/ Q, B
34. static String valueOf(double d)
6 \, E& I$ f$ w5 j& I+ R35. static String valueOf(float f)' v8 T# H+ W$ H6 A* n& k6 [
36. static String valueOf(int i)
6 L( |) ]' K( S37. static String valueOf(long l)
& W# g* D9 Q) D! O0 E* r E) g38. static String valueOf(Object obj)$ o. { A3 ~( Y
以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。+ i8 P0 l+ }; G7 z/ F
, w1 M$ T$ Y# d1 g; `$ r# `
/ w7 n, k; O- f# _- I
+ o- e& M4 M5 ]( }/ J3 @% E! ~ u) z& w5 T- t; q2 F% \3 A
& u: s' }- n8 W, f& u. z1 t5 e
Java中String类的常用方法:* S0 {2 t8 k! a
; ~+ L& A2 }( x C6 p5 Y
public char charAt(int index)- a- `8 H8 ~, t7 }& n
返回字符串中第index个字符;5 H0 l/ l/ L1 y( y! h* B U) C4 K; b7 _
public int length()8 O+ {2 ]) v Q
返回字符串的长度;. r9 e* z3 C8 q) M7 r' k4 S1 {5 Z( h
public int indexOf(String str)$ b) m3 V0 F" \- N, q3 |
返回字符串中第一次出现str的位置;9 w7 A8 R2 V7 u3 a9 f# T/ o9 ^! A2 h
public int indexOf(String str,int fromIndex)
$ ^) W9 |8 }9 w- R返回字符串从fromIndex开始第一次出现str的位置;
1 `2 U4 I" q0 h- v4 d( Ipublic boolean equalsIgnoreCase(String another)
5 w( d4 K5 U& j比较字符串与another是否一样(忽略大小写);2 q m) w. S0 E. o/ Z* c/ ?" E
public String replace(char oldchar,char newChar)
' g" w+ C( {% s2 M' k: I S在字符串中用newChar字符替换oldChar字符
& b3 a+ ]' W9 b! S1 X" vpublic boolean startsWith(String prefix)4 u& W. P7 d3 i
判断字符串是否以prefix字符串开头;
, e |# l: {0 l' |8 [2 s c3 spublic boolean endsWith(String suffix)# F q2 G4 z3 F5 {' @- c
判断一个字符串是否以suffix字符串结尾;
/ D; G0 C) _$ u4 X; k; v5 \& Xpublic String toUpperCase()* p9 N; |: D) ^- z1 E5 S, y: W
返回一个字符串为该字符串的大写形式;
+ L& e+ f+ W; _0 x" e/ Cpublic String toLowerCase()
; g( n; u h. r; _7 `0 ?+ V6 l返回一个字符串为该字符串的小写形式
# i* a/ _1 Y4 _6 d( U* C( @, d# `public String substring(int beginIndex)# F( P* E: i6 c. n- O6 s$ b0 X
返回该字符串从beginIndex开始到结尾的子字符串;; D: o4 P+ M3 h) Z
public String substring(int beginIndex,int endIndex)9 q7 s' u$ X& F j9 I& o+ i
返回该字符串从beginIndex开始到endsIndex结尾的子字符串( I( c* g# \8 F
public String trim()% A+ h E5 f! X/ a% b7 R
返回该字符串去掉开头和结尾空格后的字符串
% D8 ?4 A% F& r; |; l! R, Cpublic String[] split(String regex)
: \* }2 j; P- q* q0 F4 [" }* t将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组2 B! n7 u. h: ~+ M" d
实例: ) W) e- ^. \+ v" ~: i
public class SplitDemo{
- C7 U' H: d! C# ]. o public static void main (String[] args) {
Y. N& f0 h/ U1 V, v. @) z: h' U% E* e- L% i: p
String date = "2008/09/10";
( K. g' \- n' m/ |' F5 V$ { String[ ] dateAfterSplit= new String[3];4 Z: J3 H/ M( Y9 _& q
dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。! C* P3 o+ _' U
' r) s. k4 O2 A* A; ]: \& H5 \- Z9 ?
for(int i=0;i<dateAfterSplit.length;i++); W0 k- I0 n, y& d7 R8 I
System.out.print(dateAfterSplit+" ");
1 a' R: Q3 {) W: g @( q }. y ~2 u5 \: }7 o7 g
}- T; G% s, _; _7 i$ ^9 A# n6 z
% y3 ~3 s* ~8 J运行结果:2008 09 10 //结果为分割后的3个字符串
9 l7 n9 \( G6 g3 f1 g( u8 {3 b% o5 a( t8 Z4 w: L% q
实例:
- H2 ^( P. w7 mTestString1.java:
( y& n2 E) a* w程序代码 H1 R Q- k/ F1 [ F4 J
public class TestString17 {- c! ^5 I; {+ M
{/ U6 N* f4 q( o2 F- Q2 H7 f
public static void main(String args[]) {
3 F1 p0 h3 X! o" @: M String s1 = "Hello World" ;
, `2 g6 `9 P9 @. F/ N String s2 = "hello world" ; a, A, c3 P" r: W& u% t
System.out.println(s1.charAt(1)) ;
; @. N; X% k: K2 n& p System.out.println(s2.length()) ;
: L8 L* s; M4 Z' t System.out.println(s1.indexOf("World")) ;( z. j' W+ Y6 Y( u# n, e
System.out.println(s2.indexOf("World")) ;- Q8 k S% c: e( L* @" Q
System.out.println(s1.equals(s2)) ; U% F+ Y% [: k4 a; |
System.out.println(s1.equalsIgnoreCase(s2)) ;0 m4 \7 F2 P4 C* R7 @
/ ]9 t" i( Q- D5 f- W& U) G, ^ String s = "我是J2EE程序员" ;
' C) o" q u9 M) n String sr = s.replace('我','你') ;3 W$ v' N+ r$ E
System.out.println(sr) ;7 b! ?4 v4 t* T9 y" y' |
}
1 N! i8 L/ G# c. S- L}
8 t1 _" W8 c- B; u; g. c) C% H: s. k3 Z
TestString2.java:* c( ?7 S1 T+ B5 u/ b- ]5 ~) W3 O3 j
程序代码' D1 P% L# j' i- h! F
' F! p. T& J$ ?+ A$ g
public class TestString2
# B- a" ]# h2 h8 F; r{$ S! b; N) |5 m1 M! c
public static void main(String args[]) {
) I4 |* X. |8 c String s = "Welcome to Java World!" ;
: a9 p3 ]0 j9 H6 P$ Q9 { String s2 = " magci " ;+ }' P4 I: f/ Z; Y& s
System.out.println(s.startsWith("Welcome")) ;
6 N$ I( O$ w1 p; d System.out.println(s.endsWith("World")) ;: t0 j6 f$ L2 z5 Y1 N( `
String sL = s.toLowerCase() ;4 W! n8 P; A) k: I0 o9 `! P
String sU = s.toUpperCase() ;+ Q2 i* W* {- u5 z7 v) \
System.out.println(sL) ;0 r3 {" t) N5 G8 W, G+ o
System.out.println(sU) ; r5 R: y+ W' @* B0 K# l' [8 j
String subS = s.substring(11) ;" u8 z" l* \7 y( N5 L9 i |. K1 K
System.out.println(subS) ;6 m, d6 \# F/ w2 J& R6 J8 J
String s1NoSp = s2.trim() ;
7 P. s& t, x8 O9 t |2 c$ O- d System.out.println(s1NoSp) ;% f. y, H+ E: ~' \
}, K9 }$ d* ?# t- \% h$ z
/ a! ^9 U- z: J" g% L/ p8 q& v |
|