该用户从未签到
|
String : 字符串类型! ^; _8 t+ Q1 m9 w0 e' \0 s+ I; R
5 H/ L- V/ ]$ H/ \" H4 n一、构造函数
# y- K7 }1 n# f$ Y: ~1 { String(byte[ ] bytes):通过byte数组构造字符串对象。
3 H* o' d" {- W5 H8 h! U String(char[ ] value):通过char数组构造字符串对象。2 p" Y3 @- L3 e- N% X
String(Sting original):构造一个original的副本。即:拷贝一个original。/ {& G7 H$ I( ], F; z) ]7 i$ q
String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。 : _1 @2 B( M$ r0 w* w
例如: n# w# y) ^; r, {. c
byte[] b = {'a','b','c','d','e','f','g','h','i','j'};* t; ^3 D5 W/ \ `3 J7 C' E
char[] c = {'0','1','2','3','4','5','6','7','8','9'};
8 @: I/ c7 X' x; ^: u/ Q R String sb = new String(b); //abcdefghij
+ n/ [0 t5 K9 `; _ String sb_sub = new String(b,3,2); //de
4 e5 f2 d* k! ~6 |' e. |# n6 a/ [ String sc = new String(c); //0123456789& E6 J# E3 @2 [0 p
String sc_sub = new String(c,3,2); //34
1 J4 P! F; I$ M" n* |: z String sb_copy = new String(sb); //abcdefghij 5 ~4 @; @" b* x9 p* ^
System.out.println("sb:"+sb);
' G' S% G1 d- t+ T; @1 x4 B System.out.println("sb_sub:"+sb_sub);
5 [8 H* X% D* {( ?$ ]) D System.out.println("sc:"+sc);
3 c! }; V& Q8 [1 v System.out.println("sc_sub:"+sc_sub);. G8 o1 H F1 v+ e- W1 F
System.out.println("sb_copy:"+sb_copy);% X- |# c6 [' }% z
输出结果:sb:abcdefghij9 y4 L' X( j) I! f! _, P" \
sb_sub:de% @% N4 E; V4 ?
sc:0123456789
. W$ J, i( _$ X! H+ }# C6 d sc_sub:34
" y" n# j. J* C sb_copy:abcdefghij4 q6 N* [8 T, p% ~6 q4 H) ?
$ R3 F, P5 N& h
二、方法:
/ x/ _' T$ R1 o% e! Y% a! J
% k2 |1 D y. S' P8 ?# z 说明:①、所有方法均为public。
- V- q+ ^! u# q/ H" f# N5 R ②、书写格式: [修饰符] <返回类型><方法名([参数列表])>& T" f; W1 R, J0 \9 w+ I
2 [4 F' I! B5 L5 ~6 a 例如:static int parseInt(String s)1 A/ @ A( G3 g" e; {
表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。
) b0 S8 w- o* Z! _
/ T; b3 d9 T7 ]1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。
# u- @: H- Y' H3 x! ~) ^
1 \+ o2 p) H% u* g6 J3 {; A) c2 |3 g2 d2 M( g( Q/ [6 M7 n' _
5 x% p- B) b) z' v! R% k+ G* l 例如:String s = new String("abcdefghijklmnopqrstuvwxyz");
' }- N" w& N6 [& M! B# F9 |; V System.out.println("s.charAt(5): " + s.charAt(5) );! z6 V( X4 U k
结果为: s.charAt(5): f
" ]# [3 l# V/ A6 s5 Y0 o+ D3 G2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。- L2 _+ I- h" z
3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。" o- o, o5 j7 I2 C/ H5 R
例如:String s1 = new String("abcdefghijklmn");
$ y R0 F6 I/ X. t% R: P& r. C1 ] String s2 = new String("abcdefghij");, K' X4 Y, Q8 N8 I+ \) [
String s3 = new String("abcdefghijalmn");$ I2 X- S7 m- h- }( k
System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差2 u; g3 G1 w4 F" u, y
System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差
1 n u, X- D) @5 _7 b" A+ l 结果为:s1.compareTo(s2): 4( s% |8 R" v* X! _9 S& F. f
s1.compareTo(s3): 10
% k8 ~7 O( X U9 z6 W" Z4. String concat(String str) :将该String对象与str连接在一起。7 M* B0 Z6 k7 @+ O
5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。) h. |# V/ @4 i$ _' b
6. static String copyValueOf(char[] data) :
$ w2 ^3 F: b: p- {0 t0 P/ j0 D7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。
0 u/ I. F) X: u: H8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。) f8 O( X/ @% Z3 S! h- `
例如:String s1 = new String("abcdefghij");
; N% R: w! j, @# ]" q5 y5 Z6 X String s2 = new String("ghij");! X4 |/ ]! M8 `+ L5 P9 n5 z e
System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );
9 C/ H) ]$ l# }6 v$ y 结果为:s1.endsWith(s2): true
1 c/ d7 L' k; e& i) A2 K9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。2 Y7 Y8 l( Z2 B5 P0 l
10. byte[] getBytes() :将该String对象转换成byte数组。
5 u# ?8 F* H7 Q- N+ z11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。$ ]4 F# R' d$ E
例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!
" C* g. Y% ]" J8 E) G: i String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!* O3 M0 `6 ]9 \$ V# z, t
System.out.println( s1 );
3 W ^# J) M' r1 g& q( B! C3 J! Z 结果为:I love you!
( m3 l {0 p* Z, d$ N4 e12. int hashCode() :返回当前字符的哈希表码。
8 c2 z0 R6 F8 x13. int indexOf(int ch) :只找第一个匹配字符位置。
d* B. U- a$ D* |! S7 Q- z14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。. f5 n# W1 }; B9 g/ c
15. int indexOf(String str) :只找第一个匹配字符串位置。
" m( N. h6 D* X; P# b16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。
7 l: f+ H3 p$ L( q& L2 i6 X9 Z5 [ 例如:String s = new String("write once, run anywhere!");% Z! F5 ^2 }( R+ Z- H/ C, g
String ss = new String("run");
$ i8 E. S, N7 Q l: z System.out.println("s.indexOf('r'): " + s.indexOf('r') );
/ o: Q7 @3 b/ r System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) ); W& Z2 g, X L9 [6 n( E/ s" \
System.out.println("s.indexOf(ss): " + s.indexOf(ss) );
. b. r; B8 |2 H. T. P. K 结果为:s.indexOf('r'): 1
# t8 w* G% Y- h3 t s.indexOf('r',2): 12
! M4 Q* v( H- _6 ? s.indexOf(ss): 12' E, E' [0 \- w, u/ j. l* y
17. int lastIndexOf(int ch)7 w' q5 i) [( q" Z0 h
18. int lastIndexOf(int ch, int fromIndex) ]& S; Q% Y D' M* h8 l; }* c1 s
19. int lastIndexOf(String str)
( P x6 u) A3 m0 e3 ?9 o* w20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。1 @' d* }# x9 h, L: B0 B2 `
public class CompareToDemo {
9 j, y1 [8 o2 J9 N c; O+ H public static void main (String[] args) {; }8 O' A e& K6 j' Y
String s1 = new String("acbdebfg");! [" X2 t Z! F7 A
* B M, ]8 V0 K! [' I1 ]- Z M System.out.println(s1.lastIndexOf((int)'b',7));+ F! F9 m# {; y. ~7 y
}- J% }! m, [0 J. {8 u; U/ D' e" L
}/ K" `0 @6 Q: G, `
运行结果:5; V; w) J0 r8 K& D5 }0 F# n# H
(其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)' D/ \. M, Y- k0 y( m
% q! I5 Z0 a G9 @
" y# c, g8 K/ r0 l. K" j
21. int length() :返回当前字符串长度。7 f0 R3 w8 ?* ]" Q( ~- r D
22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。
1 O2 D- v: N% ], J: i23. boolean startsWith(String prefix) :该String对象是否以prefix开始。
, a5 m' }6 F6 ^3 P3 f8 }24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。
8 l p& o/ a6 y3 @$ D! e; z! r 例如:String s = new String("write once, run anywhere!");
' p% p7 f4 G2 d String ss = new String("write");
3 ?5 d9 [8 h& }0 v String sss = new String("once");
2 _/ E8 y# Y6 l; Q& \ System.out.println("s.startsWith(ss): " + s.startsWith(ss) );
- h3 |" F6 e3 i* z8 c System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );6 u; T# o! N8 U4 A, u
结果为:s.startsWith(ss): true
) H S: `. i( u- ] s.startsWith(sss,6): true; C+ `, L4 O- c+ a+ m; n
25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。
# V, f3 e1 S Q' o/ Q3 ]26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。7 C! f" t ]! H( j; e
27. char[ ] toCharArray() :将该String对象转换成char数组。
- g! y8 z6 Q, x28. String toLowerCase() :将字符串转换成小写。8 _' Z5 t7 E( k$ S c
29. String toUpperCase() :将字符串转换成大写。
1 }- _/ W( x$ I* ~$ k" p 例如:String s = new String("java.lang.Class String");' f, d1 P; ~' ~% _/ h
System.out.println("s.toUpperCase(): " + s.toUpperCase() );2 h# ~4 p% I4 h. w. P! ]" h7 h
System.out.println("s.toLowerCase(): " + s.toLowerCase() );7 {, s$ J; c" A$ M9 W8 b0 |
结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING
- ]4 r, p$ T: x1 y F s.toLowerCase(): java.lang.class string
+ F* C5 T6 V: a& V! ^+ f! q# [30. static String valueOf(boolean b)
/ c6 R# Y! \( r- ~* f31. static String valueOf(char c)
c1 k! e) c; n6 v) q32. static String valueOf(char[] data)+ d9 N% H; {" h
33. static String valueOf(char[] data, int offset, int count)( S0 E8 P8 b- D# S: X
34. static String valueOf(double d)
! b j" Q& `8 e* w35. static String valueOf(float f)
2 h$ A X% N- f+ l9 k4 A! j) A36. static String valueOf(int i)( p: I' z F3 x9 J% N% z$ D
37. static String valueOf(long l)5 m9 v5 |5 p+ ^2 s) J+ c# |
38. static String valueOf(Object obj)) T+ V4 Z% q- Y- I
以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。, ?" {7 K6 N L! ~# _- R- h
! ~$ f4 F" ?# Z
/ X5 w1 u2 _& z' z. ^6 d
5 k, Q% a+ W: d$ h7 u
+ X$ c. {' S {! e3 W9 J4 {7 t2 L3 j5 m9 |( _5 n
Java中String类的常用方法:6 |4 A; X' _ R/ i* [5 ?! X
" X6 U) l- O) m3 `: s y3 d3 \
public char charAt(int index)- j! c8 O; s) e2 O) {
返回字符串中第index个字符;
3 M- W9 s! b& f9 ?2 I+ npublic int length()
- x, G1 K# V4 U% _3 G返回字符串的长度;
2 s8 Z. ?% g! c% s4 X5 J3 {public int indexOf(String str)! \& l# O2 F" k: T3 C/ \( v1 |9 U O/ K
返回字符串中第一次出现str的位置;
1 t& y: M: ?& q2 t" S$ ypublic int indexOf(String str,int fromIndex)' U9 h( Z: q- m& y& h+ Q/ V [
返回字符串从fromIndex开始第一次出现str的位置;' Z/ F, L$ g7 m& V4 |; j
public boolean equalsIgnoreCase(String another)& F, z( ]- O& N
比较字符串与another是否一样(忽略大小写);$ K/ D0 C' o/ h, _; G
public String replace(char oldchar,char newChar)4 c5 E, H( t2 ^! R9 W2 v" v$ z
在字符串中用newChar字符替换oldChar字符
4 m) |# ^0 ?# i" b }# D* fpublic boolean startsWith(String prefix)
! a% Y5 B) {" j! j( h& O; G$ t/ e判断字符串是否以prefix字符串开头;3 R. R b( B3 t# E8 G7 C( l c
public boolean endsWith(String suffix)
' O A0 | f, E. E' i判断一个字符串是否以suffix字符串结尾;# v/ B4 C3 H. p8 ^' y l: O
public String toUpperCase()4 `0 r3 s/ Y0 f2 R- K1 z' c
返回一个字符串为该字符串的大写形式; b7 n+ {% j3 N: s3 U% ~( y, C7 B7 r
public String toLowerCase()6 b! B x2 c8 J- W" Y
返回一个字符串为该字符串的小写形式4 ~0 K w; j; O( }2 z2 n! d
public String substring(int beginIndex)
6 o: ]0 r7 X9 z5 t* C返回该字符串从beginIndex开始到结尾的子字符串;
0 J" x7 \5 P2 T5 D3 O3 zpublic String substring(int beginIndex,int endIndex)* \$ }8 A+ S, l: [% L4 q6 ^( @/ s/ ~( F
返回该字符串从beginIndex开始到endsIndex结尾的子字符串
; g! w7 {3 @6 j7 @public String trim(), ]0 N2 H7 z4 E" F5 E
返回该字符串去掉开头和结尾空格后的字符串
5 `3 a& Y& l5 F$ Z+ R0 Y% Ppublic String[] split(String regex)# Q( [: c' q! V
将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组
$ {3 [ ~( o+ v/ U" E实例: / X) d. `) t# z5 @
public class SplitDemo{
, D! [/ f j7 E* I- v) B- ?6 f public static void main (String[] args) {3 W! y$ _( R {, S! m
# h3 `: l; H+ t- m$ P ?$ ^# a4 w5 p
String date = "2008/09/10";) p0 \1 G! l: o/ b+ P/ C
String[ ] dateAfterSplit= new String[3];- e! e* v9 _( L, T
dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。
3 i3 Y1 J, F p+ Y9 f1 v. x5 Q+ {' Q
for(int i=0;i<dateAfterSplit.length;i++)0 }; Q, l+ o8 M0 y. _
System.out.print(dateAfterSplit+" ");. }7 O* S: B5 p. R# q
}8 z7 u: T3 c$ d& f
}
2 K( F! C0 P' r0 e: s3 O
0 l9 j H% O+ Y( v, O v2 p5 |, ^运行结果:2008 09 10 //结果为分割后的3个字符串/ ` F, U/ p% I7 T2 k8 p4 e) @
8 |9 t0 V0 m& x, o: K8 U, v
实例:
: S9 w, l- \9 s( d$ s' tTestString1.java:
2 z- m" W5 ~" D2 S" j程序代码
7 R8 U) o+ {! i6 _/ v+ ?9 mpublic class TestString1
4 H9 U3 ^5 C; v2 O* g, s' s. X{
, G" @4 Q" L, c( D3 z/ g7 V public static void main(String args[]) {
1 o2 b* A9 T( u$ g! q& p4 I8 I4 @ String s1 = "Hello World" ;
/ E8 L0 p. S# d/ H8 r String s2 = "hello world" ;
3 {! ~ [9 A+ \- G System.out.println(s1.charAt(1)) ;1 l; b& E) B+ M0 M0 H. J9 b" _
System.out.println(s2.length()) ;0 W2 }/ a8 H0 t
System.out.println(s1.indexOf("World")) ;0 N: L$ _9 ~2 L5 {: l
System.out.println(s2.indexOf("World")) ;
* ~3 R' L3 m5 W$ E. o c% ^" G3 Z System.out.println(s1.equals(s2)) ;
+ K: \ K/ T/ {$ b, r5 y& ?" p3 M System.out.println(s1.equalsIgnoreCase(s2)) ;% e' d1 R* P: T2 Y
) D1 ]: K& M+ x) |
String s = "我是J2EE程序员" ;; J2 h4 S1 ]4 v1 O% E+ Z+ T
String sr = s.replace('我','你') ;/ C1 @4 o& F O0 r, y: t( F
System.out.println(sr) ;+ ?! J/ K. L9 d- m3 [
}
5 k' X5 m% e" z1 @# j9 @}
; x* b) z; J3 _1 j( V. S# D. z9 f8 q9 e2 J3 k- q
TestString2.java:
% w5 x& q' ~+ N1 \9 G程序代码
8 _9 e; d6 Q2 t0 {" [2 S; H k" b' r7 t9 ?: G* h$ M& X8 c5 k
public class TestString20 {- T1 {8 { W2 j1 i3 q
{
& g8 Q0 n) N- }" Q; A public static void main(String args[]) {+ A' x g" ?0 ?7 c
String s = "Welcome to Java World!" ;
! n0 H1 o( Y( g9 p String s2 = " magci " ;0 @. H! p: v3 c3 t+ ` i3 n* V
System.out.println(s.startsWith("Welcome")) ;
- F8 ~' j1 _( }- [ System.out.println(s.endsWith("World")) ;
* \5 V3 ?0 G8 g5 I$ h' l String sL = s.toLowerCase() ;
/ ?) T0 Z" g& N& Q. R String sU = s.toUpperCase() ;
5 u; f: ]. Q7 n- m) c System.out.println(sL) ;" _9 k. |% \$ d
System.out.println(sU) ;2 S( x+ K% ~% c
String subS = s.substring(11) ;" b4 t4 }; ]8 U0 ?0 W
System.out.println(subS) ;9 q1 G$ I2 U: A+ f' Y, W
String s1NoSp = s2.trim() ;4 B- F+ O% X- ^; O; [* k7 S, p) p
System.out.println(s1NoSp) ;
# Q: D8 B& H$ f" k1 J* M+ t }
3 M% `/ l. E% `4 l4 o2 T4 K5 i& s. t3 }( y
|
|