该用户从未签到
|
String : 字符串类型 _8 ?, @7 s( W2 d' A& g- `
3 \1 z2 P L( I& u- K. N一、构造函数
/ B' q; X6 B3 V2 \* h String(byte[ ] bytes):通过byte数组构造字符串对象。
. v$ h6 l7 f2 |9 K5 C. V String(char[ ] value):通过char数组构造字符串对象。2 Z. U2 n: W( I# {+ u
String(Sting original):构造一个original的副本。即:拷贝一个original。
6 R0 i R( g1 X3 I' n) e String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。 ! g* z8 f; \ b9 E
例如:, q6 j% A! _, ?3 k% `$ X h6 t7 M* D
byte[] b = {'a','b','c','d','e','f','g','h','i','j'};; ?4 e+ ~* m; z* Y8 E
char[] c = {'0','1','2','3','4','5','6','7','8','9'};. j- Z/ q7 N$ l" k
String sb = new String(b); //abcdefghij
3 K1 Q: y0 Q* E$ x( E String sb_sub = new String(b,3,2); //de7 Q* L; E( p5 B! }) _
String sc = new String(c); //0123456789
! k' ?: W' ?5 v4 D String sc_sub = new String(c,3,2); //34
0 J' B* j, @* P8 e* \) t String sb_copy = new String(sb); //abcdefghij , H. ?, n; ^" W" R6 p( d
System.out.println("sb:"+sb);& `8 p+ I# P- T( r: y- A
System.out.println("sb_sub:"+sb_sub);# r2 i% w) W. E+ C' e
System.out.println("sc:"+sc);
6 O; V1 Y3 i. |, @" w! c- X System.out.println("sc_sub:"+sc_sub);) x* r6 V: ^9 S$ J. T) }
System.out.println("sb_copy:"+sb_copy);
6 ~7 z! `" p" _: [8 j) x8 [7 S/ d 输出结果:sb:abcdefghij
+ S' a1 a1 ~; ~& ` sb_sub:de
9 U7 Q- n; Q( s3 e# Q sc:0123456789) `5 L2 r& q F6 ~* f* i6 w: ~
sc_sub:344 e! r* ~( i% K3 h
sb_copy:abcdefghij+ Q) j$ T8 e' u' }/ f
4 [, T( V4 n8 x A$ r7 r# z二、方法:
2 G, m2 h, ?7 [$ F, S5 D6 n1 ~
8 e2 s* n; P5 N5 Y" Z 说明:①、所有方法均为public。
, }" q& c9 D0 a1 Y ②、书写格式: [修饰符] <返回类型><方法名([参数列表])>
7 v* ^8 n2 L& _0 K% F" i! H/ v, L6 [1 w: a, Y7 a6 n" s, J, u0 |" p: s
例如:static int parseInt(String s)7 B9 P/ z- g5 C) J( h
表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。
& q& o, @, q: T5 Z. d/ o& d9 _- N4 O' s" Y7 B' e
1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。- Q4 _) {% G, u+ Q2 r+ N+ D0 ^& ~
7 C3 Y5 h5 ?5 E$ D( D0 h2 k8 J( K
2 F8 a+ J$ n) o
5 z8 n8 r+ e9 j; S B! f% U& I 例如:String s = new String("abcdefghijklmnopqrstuvwxyz");
2 @. x- l. V% R; Z! ]3 n System.out.println("s.charAt(5): " + s.charAt(5) );9 f- L6 y7 x: j u" Y' p- E( _* S
结果为: s.charAt(5): f
9 m2 ^/ K, z+ c7 t: i, b0 l$ I2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
* o! s( E. L, |$ c3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。
: _7 N& ] Q+ p0 d& V 例如:String s1 = new String("abcdefghijklmn");
8 y* G5 v! ~8 A String s2 = new String("abcdefghij");
1 i3 v5 x. V7 | String s3 = new String("abcdefghijalmn");' e4 \2 Q' C' N. J4 ]
System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差
$ L- L& @9 n* ~9 h1 m \ System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差( M, R& A- J7 Q, K8 [: j- |
结果为:s1.compareTo(s2): 4
# ~& k/ Z a Z s1.compareTo(s3): 10- H! B' |0 ^/ d+ y9 i1 Z1 E
4. String concat(String str) :将该String对象与str连接在一起。
4 {; {5 {5 U% R7 X1 j, g5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。
8 Q7 `/ ~) s# n8 a6 J" o6. static String copyValueOf(char[] data) :+ p5 {3 ]& n" y. J& A
7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。
4 b6 ]+ J5 i& j7 F" y" ~8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。" Y6 D' x+ C" A+ p) r
例如:String s1 = new String("abcdefghij");8 N8 t% g* y. \* t+ M8 }8 V
String s2 = new String("ghij");
5 }# `! {; A$ Q7 m( S System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );) t. r7 j4 R9 n1 b+ L# E( u
结果为:s1.endsWith(s2): true
- w6 G+ c$ i s5 {6 P9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。4 l) V x7 J$ p' d* j
10. byte[] getBytes() :将该String对象转换成byte数组。
8 S/ x! N# E6 d# }: \9 P11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。& `9 z: X/ P q: G6 m" A1 l
例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!# b% W0 j R9 V: d0 |+ y* W9 {% h
String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!
2 a- J( Z+ |0 u; X2 r System.out.println( s1 );$ D1 x8 O Q _1 A
结果为:I love you!
3 p, W( I' j0 c12. int hashCode() :返回当前字符的哈希表码。
: y! v9 p" c( A; d13. int indexOf(int ch) :只找第一个匹配字符位置。$ D# ]+ m, A& b; d1 P. U% L/ d
14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。
0 M1 j# J5 }; M% ]/ K+ Z. e15. int indexOf(String str) :只找第一个匹配字符串位置。0 l! i% b. |. K& l/ t2 j0 X
16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。
' e; U6 U y7 P, |3 D 例如:String s = new String("write once, run anywhere!");
. G6 W5 z! W( b* G D8 y; I/ U String ss = new String("run");
" O* Z7 h( z5 c) U( P3 _* x/ \ System.out.println("s.indexOf('r'): " + s.indexOf('r') );4 Q, l. ^8 m5 h; e$ h' m
System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );
+ Z4 O0 K/ a5 X; P( N System.out.println("s.indexOf(ss): " + s.indexOf(ss) );* _, @# }" H N0 |: t
结果为:s.indexOf('r'): 1
1 @& {4 `+ B4 S; F s.indexOf('r',2): 12% m' g% ~# R W. r7 Q Z$ x
s.indexOf(ss): 128 [# X% k" S- l
17. int lastIndexOf(int ch)- ^* |6 l [: |# y6 F4 @* ^
18. int lastIndexOf(int ch, int fromIndex)& P* ?- y! f1 }' e
19. int lastIndexOf(String str)* G m5 l- l. ]# M/ x* w& n& S
20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。
, Y& z& S) l! I3 U( Tpublic class CompareToDemo {. A# z1 F( I* Y$ E
public static void main (String[] args) {
0 l( F) e$ `% M5 D String s1 = new String("acbdebfg");; _0 V% E7 e/ X
* Q) ] F6 |8 Z* q$ K0 R4 S
System.out.println(s1.lastIndexOf((int)'b',7));9 u+ S( f! A" Y- d/ s
}
5 Y1 D; E8 a5 ?$ k}
# z0 X0 y& ]6 s9 C; y% D9 E运行结果:5
9 a, v3 b5 d# B (其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)3 L* r% i* S2 e; f7 {
3 N' H7 j: N# x# C
0 f7 R/ I: s3 E
21. int length() :返回当前字符串长度。
" S, P M w+ B, k D) B22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。
3 U" d, ]) W/ e7 u' O23. boolean startsWith(String prefix) :该String对象是否以prefix开始。
* ~0 D/ H+ `5 _24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。
5 x3 z4 a+ t8 Z0 f: T 例如:String s = new String("write once, run anywhere!");7 s5 x" U, n4 `& h- D
String ss = new String("write");* p$ A2 m9 b0 V- F4 a+ U) T
String sss = new String("once");
$ c0 A# j/ I: f# ?& C. C8 z System.out.println("s.startsWith(ss): " + s.startsWith(ss) );4 o2 H5 I. h7 w4 o6 O
System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );* T4 K) X* E: a5 y
结果为:s.startsWith(ss): true! R: F1 U5 l$ K: [5 B
s.startsWith(sss,6): true
' E) k. `6 v* f$ G25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。
5 H; ^: j- j" v$ e# O" Z$ M26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。8 x7 b6 Q9 b, W+ s7 T9 n+ m
27. char[ ] toCharArray() :将该String对象转换成char数组。
8 Q& ]( o+ R( Z* j v28. String toLowerCase() :将字符串转换成小写。/ H6 W# ]5 k! d% E" i; a' x
29. String toUpperCase() :将字符串转换成大写。
0 n- i3 u, p [ O9 D 例如:String s = new String("java.lang.Class String");
7 [ z3 ~6 s& w R7 y& g System.out.println("s.toUpperCase(): " + s.toUpperCase() );! h/ p9 A- r; n# i9 m
System.out.println("s.toLowerCase(): " + s.toLowerCase() );
4 a) L8 Q5 g+ s7 Y0 | B3 | 结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING
. m7 I5 i3 ]) _9 o- K, ~ s.toLowerCase(): java.lang.class string
% F: i0 E' Z6 B' m1 L- C30. static String valueOf(boolean b); `. W( V# T. p' N# r. o; a: t
31. static String valueOf(char c): c) K7 H/ ]& [/ }) U8 A2 k
32. static String valueOf(char[] data)$ ?( f# L. @- ]0 U. b
33. static String valueOf(char[] data, int offset, int count)- V# e) G( H" G1 C5 L7 p! d0 R5 N
34. static String valueOf(double d)5 J/ F' H5 H" K2 w. X) Z* M
35. static String valueOf(float f)2 b! S0 n1 u& V! i9 A
36. static String valueOf(int i)
' ?. y4 ^, q+ Q; h37. static String valueOf(long l)2 g1 n- p4 @4 P/ o- L3 ~/ y
38. static String valueOf(Object obj)
1 m. r: m) |5 |8 [- K8 p 以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。
7 z" Z! p' O$ b* g+ R
8 r$ V( Y8 Q+ \! i( ?( _6 P% L
. O) N. y0 l7 \1 Q2 T+ r% D; j, t6 n
. _8 F* I# ]* f% J3 M2 k: k3 @
8 W& W1 q- v: K
Java中String类的常用方法:
: v' E+ ]& U' i, p4 j* j: V
& R. o1 a' O. spublic char charAt(int index)# ]! l" }& p% K7 X5 S+ x/ p/ x
返回字符串中第index个字符;
" X# L+ o; N0 ipublic int length() n0 t0 _& P9 C
返回字符串的长度;
% N. I$ c) y8 {% apublic int indexOf(String str)
) k/ C7 z5 _$ ^6 a* m3 E; o返回字符串中第一次出现str的位置;
% z0 a2 S. ^$ w( s& \# Rpublic int indexOf(String str,int fromIndex)/ M9 w- ^+ [9 H0 w' f
返回字符串从fromIndex开始第一次出现str的位置;
& r& l- A7 k5 o ~7 \0 m. B6 K6 Y+ Rpublic boolean equalsIgnoreCase(String another)
6 {) z! h) [% |比较字符串与another是否一样(忽略大小写);3 @% G* s& F" V) Z5 J
public String replace(char oldchar,char newChar)
4 N* ^: v \# b! @, q& o在字符串中用newChar字符替换oldChar字符
3 t ]1 P+ l" R: e8 l. U: {public boolean startsWith(String prefix)! |3 Z7 e: o0 i$ v; ?
判断字符串是否以prefix字符串开头;! t4 u6 X/ Z/ |- I1 d
public boolean endsWith(String suffix). H( v6 L4 F h& f0 P" f
判断一个字符串是否以suffix字符串结尾;) k4 C5 g# B5 g- C' h% ?& }! z8 z& a
public String toUpperCase()9 A8 J. ]; H; |, y: }$ V
返回一个字符串为该字符串的大写形式;
/ ~# L9 d& R5 m M7 m3 |, K, _public String toLowerCase()
6 B) |$ n- v( r$ u: S, s: |8 e返回一个字符串为该字符串的小写形式- \) O$ P# |2 W7 x
public String substring(int beginIndex)
, L8 F5 T- Y, C, J0 a返回该字符串从beginIndex开始到结尾的子字符串;
8 Z6 {1 ~/ V1 F0 Rpublic String substring(int beginIndex,int endIndex)
& A- U( j* \5 s9 ^6 q返回该字符串从beginIndex开始到endsIndex结尾的子字符串
) G! w1 ?8 ]' q; p/ C/ ypublic String trim(): C) v/ @ o0 D- s- j0 A# _9 @
返回该字符串去掉开头和结尾空格后的字符串% R; X7 W) {+ b; N' f
public String[] split(String regex), N* P" `' r f6 C" N9 ^
将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组0 V% u3 z6 u: r! v4 s C V: D
实例: 8 B7 R- r1 i# }# ~/ k; } f$ F
public class SplitDemo{# j# a8 b# [9 T0 I* p
public static void main (String[] args) {
& G& d w- D- ^, s% V U& ~" F1 C- O8 o/ [% }4 S- u
String date = "2008/09/10";* [9 P% h$ k3 c! c7 t; o: h9 A; y
String[ ] dateAfterSplit= new String[3];
" v/ ?* P, J7 T' U% F' V dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。
) }: D. l7 j6 T& ~& q) `0 {1 S/ D5 e6 \# h8 @8 j% U, m
for(int i=0;i<dateAfterSplit.length;i++)
$ d' y7 k U6 n" R& G' H' U/ C System.out.print(dateAfterSplit+" ");
" q# c+ w$ k b( ]! q5 g* | }
; c! A; _( v& G+ {- `7 U% @ Q6 ~}
, Y+ q; J( @4 m# x% Z8 E; O! E* C9 Q7 C' I* p, G
运行结果:2008 09 10 //结果为分割后的3个字符串3 R* r. ~. B: E3 I& l v0 v3 ~
1 Y9 h/ P' y7 O7 p! }* ]$ I实例:
) j% p# r6 G* eTestString1.java:1 w( o: o- U' s+ ]5 c% l. I
程序代码
( Q% P. f) O, Wpublic class TestString1
! O5 ?- B+ g& i& r3 i, w{
- `6 t, L" c. j9 S public static void main(String args[]) {% `" L7 d4 x- w4 d4 l
String s1 = "Hello World" ;# d0 \4 h ]) g2 {1 ?
String s2 = "hello world" ;
) ^: ?/ k- V. H' e9 q) ]! A Q! @& B System.out.println(s1.charAt(1)) ;% t9 ~; b( J" f5 m. @
System.out.println(s2.length()) ;
2 D5 C/ v9 Z- g) x. a% C System.out.println(s1.indexOf("World")) ;
6 E0 ]( Y. D9 d) o: P6 U: a6 `/ \3 ` System.out.println(s2.indexOf("World")) ;$ F2 G; E! b3 |4 B0 H
System.out.println(s1.equals(s2)) ;. W4 V0 F4 S9 K3 }$ A
System.out.println(s1.equalsIgnoreCase(s2)) ;+ t4 }4 A n9 r% M5 |! W/ {
- I+ |% O8 v# Z, B9 E( S2 t6 e String s = "我是J2EE程序员" ;: q: W# [4 K4 V' F
String sr = s.replace('我','你') ;
9 S0 I( g+ b# G: U5 h" U* H System.out.println(sr) ;( g+ q. o2 O8 Y
}4 F, P6 [# B5 A* ]
}& R+ Q/ V1 }6 m: a) }) |
3 k( p6 j# [4 Z# {TestString2.java:
% Y0 X, x! Q& S+ k$ E& p" Z程序代码2 l+ m/ }$ O' e6 r" p) _% ]- z! W; G
3 W* m) ]+ N. E
public class TestString2) H" R( G6 p+ e0 l
{
' E/ K0 r9 T! M# y$ c' D public static void main(String args[]) {
6 H! a! q8 q1 N# Z3 b1 i String s = "Welcome to Java World!" ;
4 D) r0 c% t8 G String s2 = " magci " ;2 x) l3 H- j0 ^8 y
System.out.println(s.startsWith("Welcome")) ;+ z: J3 _/ U; a' K3 r. b( x
System.out.println(s.endsWith("World")) ;
K, z9 ~6 Z* z String sL = s.toLowerCase() ;
. ~! ?: X( ]9 Z$ q5 j String sU = s.toUpperCase() ;
; h" f' r5 x0 w System.out.println(sL) ;
/ C6 k+ h& ^' O System.out.println(sU) ;1 @+ A Y" M% m$ M: ]" o
String subS = s.substring(11) ;& Z- m& f0 k+ q/ f
System.out.println(subS) ;' F; @5 z$ C) e* b1 H x- ^9 Z
String s1NoSp = s2.trim() ;7 d& \6 S2 s4 @) [4 e7 m) T
System.out.println(s1NoSp) ;
% r' j: c, }2 U }. F! ?" \0 I/ i6 d9 {5 [
7 X/ P' o9 k: @9 `" \ |
|