该用户从未签到
|
String : 字符串类型7 a. ?. [9 q9 Y, z9 g, f
7 [! F9 j5 X- y- H2 C一、构造函数) N* `. H5 v0 r( a+ M5 Z C
String(byte[ ] bytes):通过byte数组构造字符串对象。$ I9 r: b5 ?' R
String(char[ ] value):通过char数组构造字符串对象。2 E `" k% L$ G' B
String(Sting original):构造一个original的副本。即:拷贝一个original。
- z5 k# [( @; U1 B1 B x String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。
) H- m6 v7 a# ~- V6 I) G例如:
. g: }( o0 U6 D' U5 `/ N byte[] b = {'a','b','c','d','e','f','g','h','i','j'};8 }: n3 ^" L% d8 B$ m$ O
char[] c = {'0','1','2','3','4','5','6','7','8','9'};, q6 k/ l& _6 U( I0 Y0 M6 [" c
String sb = new String(b); //abcdefghij
& N5 h- [& t) q String sb_sub = new String(b,3,2); //de/ V! O8 j; Y/ L+ n* D) l8 Y
String sc = new String(c); //0123456789
z# S; \3 @/ }# d* n; Y String sc_sub = new String(c,3,2); //34
% u' o) d& S5 R+ C3 r) X6 ? String sb_copy = new String(sb); //abcdefghij % I# [) L% y. I7 ^
System.out.println("sb:"+sb);
2 A4 Q' Y2 Q' A9 T System.out.println("sb_sub:"+sb_sub);# ] g/ C* u( g5 c
System.out.println("sc:"+sc);. O( H. V; `; f( R% v9 T& ~
System.out.println("sc_sub:"+sc_sub);# D9 E1 p2 o1 F! T& _9 ?) h
System.out.println("sb_copy:"+sb_copy);
+ c) D$ y! Y( Z' X 输出结果:sb:abcdefghij
f- ?6 @4 Q- ^5 P5 w# u sb_sub:de
) K) y8 o/ B# R" `6 i9 H sc:01234567896 ~3 Y0 h2 p, V/ x
sc_sub:34
6 S3 Q' ~8 n/ I% `! `7 u sb_copy:abcdefghij
1 C6 P% }- v! I6 b* z8 z Q( N9 g( Z& w% e7 O+ h8 V
二、方法:
7 s4 b1 s3 r+ o. f- E# T
# s, ` ]% M! c 说明:①、所有方法均为public。
2 `* u; D* G: V2 s! V5 ` ②、书写格式: [修饰符] <返回类型><方法名([参数列表])>$ l. Q2 m0 y8 Q" O
0 J1 I* o" l4 j 例如:static int parseInt(String s)! D/ P* e9 w7 [! b ^
表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。
. r: ^2 ^4 N: C& L- I# N9 i1 c
& i) q* t. N$ S; ~, e$ i1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。9 A9 s- e' i5 Y9 B
5 y u. X6 r% w2 v& D/ V7 d: j4 E+ H5 h* z6 p
9 m# E# U& G0 }6 ^* A 例如:String s = new String("abcdefghijklmnopqrstuvwxyz");
5 P R! p9 Y( I7 M3 J4 p. ` System.out.println("s.charAt(5): " + s.charAt(5) );
! l& ]* }3 M8 F% p$ F9 r5 i 结果为: s.charAt(5): f
, f& V- T$ H# `5 m0 u2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。0 J& B7 T: O' J* R. i
3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。
. Y* s; E/ ]; l( ` 例如:String s1 = new String("abcdefghijklmn");
' g9 m+ E8 X- j/ L1 T String s2 = new String("abcdefghij");
& z' W6 y# b9 v1 V, g6 | String s3 = new String("abcdefghijalmn");8 B8 X3 @: W1 M' r
System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差. t: Q# H/ \& S1 Y! |9 J
System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差
5 i4 a. i6 d+ f* q 结果为:s1.compareTo(s2): 44 y. b% K, Z8 f3 I" f3 c% F' U! D, S
s1.compareTo(s3): 106 f/ u8 Z/ K9 e9 X
4. String concat(String str) :将该String对象与str连接在一起。7 ~! V$ S3 U1 A! p+ }+ n! z
5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。- {( G! {3 X/ @& @$ V% {
6. static String copyValueOf(char[] data) :
7 w2 K* f h6 B7 S* \/ A6 l7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。
/ O0 A0 r' S/ J$ X8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。- _- [& J; q/ ?9 o L" E3 c
例如:String s1 = new String("abcdefghij"); t5 `0 ~) |7 C0 d+ d
String s2 = new String("ghij");) z' J8 |2 u. O- p; E
System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );6 p9 T3 E- _' M' q" ?2 X
结果为:s1.endsWith(s2): true/ j4 C+ ~/ s' B3 K# \2 w8 n# i: s6 l
9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。
) `) B( B$ t! a10. byte[] getBytes() :将该String对象转换成byte数组。$ s* q* u' S& g' |
11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。) G: E& D. H. w0 N% `9 A$ \
例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!
; u) s, d- V- i+ D$ j2 x; N String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!
) h! @. s9 H* n9 ~ \8 U7 A System.out.println( s1 );
3 A8 ~; Z: ?5 x: i( J& N" M7 Y 结果为:I love you! H' V3 P; F0 L0 S
12. int hashCode() :返回当前字符的哈希表码。" u2 A( c! K1 J- o( U% b
13. int indexOf(int ch) :只找第一个匹配字符位置。/ _) @" R2 n) F; l3 o3 Y8 T8 o
14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。2 g5 n9 |" I6 n& P) J6 u$ |: {
15. int indexOf(String str) :只找第一个匹配字符串位置。
! Y t- y6 g2 \4 K( P4 T$ O16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。* p0 X" o) `4 q1 a. U: i' u
例如:String s = new String("write once, run anywhere!");7 i4 `4 W! c- E3 e
String ss = new String("run");
7 S2 [" Z# `# k+ K" F# z9 c8 ~: ^. g System.out.println("s.indexOf('r'): " + s.indexOf('r') );
2 `5 f) O; T! N& x6 x% C4 j5 z System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );
- f+ K9 H5 i3 U+ D9 B+ \7 E/ A System.out.println("s.indexOf(ss): " + s.indexOf(ss) );) J) A1 k9 f- A" s
结果为:s.indexOf('r'): 15 m7 u4 n4 M) g7 b( _9 W2 u$ P
s.indexOf('r',2): 12, n) ^: G& G, q6 t* t" H) q4 l
s.indexOf(ss): 12
7 x* }+ v) O+ i' w+ `6 d17. int lastIndexOf(int ch)9 a' |/ d" F1 s8 e: g
18. int lastIndexOf(int ch, int fromIndex)# B' p4 _1 X, [
19. int lastIndexOf(String str)$ \; i. c( @9 V4 \4 s; n6 d& ^
20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。) J* M* F1 a" c P1 ~
public class CompareToDemo {' l- I) f+ m+ B, d7 H, D5 i
public static void main (String[] args) {) F* e% Z' {+ Q% Q
String s1 = new String("acbdebfg");- ~0 w) p1 U* F
& L) S9 b9 ?* b% \
System.out.println(s1.lastIndexOf((int)'b',7));
9 |: J F& H& u. y; v7 G% o7 i }
% ^; \" k ~8 g' l5 N5 z3 X}/ x8 ]% {! V) C& J! y. n
运行结果:5/ K& } R- j% l5 j- Q2 {
(其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)2 T2 O1 z& R/ o9 k
& D( m8 D& k: M" `- t" h5 s* S3 v7 n l. D9 a4 ~2 l) j
21. int length() :返回当前字符串长度。
1 h! Z. C. t( [, G& j& ~4 g, z2 ~5 w' p1 o22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。& l$ ^8 k6 l3 s; j& h
23. boolean startsWith(String prefix) :该String对象是否以prefix开始。
/ |5 }( G, f1 |7 n/ }2 A5 k24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。
( A3 \6 T5 b* k3 h, a 例如:String s = new String("write once, run anywhere!");$ s: C9 H9 G8 E: A" k* s. t
String ss = new String("write");
4 m0 j. P6 K) H* N" O' m5 c String sss = new String("once");3 M- i1 A7 g( N
System.out.println("s.startsWith(ss): " + s.startsWith(ss) );
. h% L4 r ]' I System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );
+ M( j. I0 q' _( ] 结果为:s.startsWith(ss): true
& O6 H% l( t: e$ R2 K1 k! i s.startsWith(sss,6): true
1 H. m7 ]% ^0 d& s- f$ v# p25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。
3 v- t3 T5 R' Z( \3 E26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。
. G# W- L+ y" e1 Q) L1 t8 S27. char[ ] toCharArray() :将该String对象转换成char数组。
" _& D2 z z9 C28. String toLowerCase() :将字符串转换成小写。
/ R' l/ k J# C s1 @; S e29. String toUpperCase() :将字符串转换成大写。5 ]3 g' S. f* {$ Y2 _
例如:String s = new String("java.lang.Class String");4 l2 d2 I! W1 t* U
System.out.println("s.toUpperCase(): " + s.toUpperCase() );
: h% u1 U% M: x6 i7 T7 @. r System.out.println("s.toLowerCase(): " + s.toLowerCase() );
7 _8 F, M8 M9 d- v 结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING5 Y& S4 g7 s/ o+ t& C$ ? u
s.toLowerCase(): java.lang.class string
0 k5 s$ C2 O' D; u/ M30. static String valueOf(boolean b)
5 r! P) n" \( V/ R31. static String valueOf(char c)! X+ A3 b. j* T+ \& \7 d
32. static String valueOf(char[] data)
# Q! T6 D6 d& b# {- h33. static String valueOf(char[] data, int offset, int count)
2 E( f1 v& w3 B8 T6 E& x34. static String valueOf(double d)1 n1 y# w6 X0 W9 R7 ?5 \! x# C
35. static String valueOf(float f)- r) Z" v9 O- a
36. static String valueOf(int i)
4 l/ v4 v6 v1 b' y" m0 i( N' l+ O37. static String valueOf(long l)" W6 O% O' k; r% x; K8 K
38. static String valueOf(Object obj)0 Q5 @ Y' r0 V: u5 ]8 T0 u' W
以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。! }2 K; O0 A; J8 {' J
& P) v. I! U6 Z6 {) }! B: K
/ D) g9 ?& w9 \: a
. V* q6 t( U2 k9 ?5 _/ ]9 o
9 u+ Q' z: t& [: n- Z
1 G; N3 k8 ?7 i- y6 T/ C* H' n) EJava中String类的常用方法:
0 W- r; P. R7 i% Y3 w4 Z+ F0 d2 t+ t3 o- h, a
public char charAt(int index)# I# t/ Y2 s: _" M7 f* u9 n
返回字符串中第index个字符;
' ~& \/ c: ^) }2 U: H& spublic int length()
' _7 d( G( S) `7 |1 Y; e返回字符串的长度;# f | ~+ `5 {, c) J/ W6 U
public int indexOf(String str)
9 C, v I: P7 a返回字符串中第一次出现str的位置;
2 f+ L: r2 a; ? c2 u9 m! ^public int indexOf(String str,int fromIndex)
, V L) t: Q# a. ? [+ F返回字符串从fromIndex开始第一次出现str的位置;
6 M i$ I' u, ~' L, H% l9 I) r7 r% Spublic boolean equalsIgnoreCase(String another)
5 V! T) k, a( U4 o+ B比较字符串与another是否一样(忽略大小写);' W' T" H9 n2 j$ j7 d9 a1 [
public String replace(char oldchar,char newChar)% ]5 o1 D4 B( U( f4 c, b) f4 h# v
在字符串中用newChar字符替换oldChar字符
0 H0 e. f: \- E! J1 lpublic boolean startsWith(String prefix)3 N q; s. f4 ^) Q$ z. M
判断字符串是否以prefix字符串开头;
/ e/ }# I% z) @+ [6 Vpublic boolean endsWith(String suffix)
5 @4 B$ R8 s3 ~! b$ l' Z判断一个字符串是否以suffix字符串结尾;
' u) k+ j8 M5 J) f2 A/ \6 xpublic String toUpperCase()9 Q' ^' _1 M: H. ]: l3 M' \
返回一个字符串为该字符串的大写形式;' f9 y8 X) B% o/ C. r* ~: ~
public String toLowerCase()5 K# G' j w* k: \* c
返回一个字符串为该字符串的小写形式8 i$ z, @0 E; t9 m" O
public String substring(int beginIndex)6 ]8 M; S" f2 ]3 J+ e
返回该字符串从beginIndex开始到结尾的子字符串;
6 n% h2 w6 M' y: t) F* H8 e: T2 @public String substring(int beginIndex,int endIndex)7 e9 |# u" `+ g2 d9 a
返回该字符串从beginIndex开始到endsIndex结尾的子字符串
, p8 ~4 U% J/ j6 }; rpublic String trim()
3 ?% X J1 V0 F* F/ s6 v- b" }返回该字符串去掉开头和结尾空格后的字符串
% j# C7 d4 T! rpublic String[] split(String regex)' n: O, A) i, O$ @
将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组
Q1 T2 f& |( _; |$ p. G! e实例: 2 _0 ~1 i) c% A1 k- P, J/ I; M$ c
public class SplitDemo{& x# D& @7 x! f6 H$ @
public static void main (String[] args) {) @' |& t" o& [- s: Q& q
# O3 g+ W0 K M4 | String date = "2008/09/10";
4 Q7 L( ~! k- I, a/ _% T String[ ] dateAfterSplit= new String[3];0 F3 s- B3 @' }6 v4 T) c `
dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。 T" Z+ a1 {# C# n
# r, P4 R# ]" x
for(int i=0;i<dateAfterSplit.length;i++)
8 X; Y- C" O8 A' T+ c: x' T b System.out.print(dateAfterSplit+" ");0 ^! z# \. f9 n# v {, g1 b# f. N
}
2 R- w& [7 u& ]6 }, B( G}- Z- A; \- `2 S; g4 d, S
% l$ R! \. ^$ c ^* c/ ^
运行结果:2008 09 10 //结果为分割后的3个字符串
; D0 N: u! @, j8 }, X% ]# {& K
6 t5 S. q. T$ |! E实例:
7 o) v r: Q& HTestString1.java:+ G' Y) b& Z" u0 p5 w
程序代码
* o8 e4 |1 ~& Q0 Ipublic class TestString1# _+ u! _0 g# O6 r2 \0 l
{
- ]* |% k4 z0 t) ] public static void main(String args[]) {: K8 e2 G2 g% G W3 \
String s1 = "Hello World" ;
$ O' n- B0 U* z: P( i String s2 = "hello world" ;
' z3 u" G8 i2 e" @. @ System.out.println(s1.charAt(1)) ;
( d! }" F& x6 C! O System.out.println(s2.length()) ;
( g) f) h$ D8 Q8 ?7 P System.out.println(s1.indexOf("World")) ;
$ G3 e: q5 | X5 q System.out.println(s2.indexOf("World")) ;! X4 [; E j- E5 }2 m
System.out.println(s1.equals(s2)) ;$ ^ S9 }1 Y: g+ j7 M" B
System.out.println(s1.equalsIgnoreCase(s2)) ;) {5 F- x1 N& I# ^
* T2 _! l/ E V$ X/ o1 r String s = "我是J2EE程序员" ;+ d% H- O8 X1 J6 f$ M) G0 l
String sr = s.replace('我','你') ;- a1 W$ x9 G3 T' d% ?2 v k& a
System.out.println(sr) ;
& F! M$ r- J1 r1 a- T+ x3 V }/ n) G1 O# h9 V0 W8 ~
}5 c% ?7 Q8 N' a0 E V# W
. M. H5 Y' @9 R2 @ e0 ]- g& f, L
TestString2.java:
) Q* z+ j, z, p% j* L2 |, s2 J程序代码% ~1 x* A; H* V% x
7 O7 }% ~, _- n, x
public class TestString2
# a& j; ~ s# n m- D ~{0 v7 I5 L7 r8 H5 s
public static void main(String args[]) {; D( o- ~5 n+ t7 J8 F- L! Y
String s = "Welcome to Java World!" ;
. b9 R, r: T7 L; d* [; c& l String s2 = " magci " ;* _, s% V9 ]6 X, v& T. h
System.out.println(s.startsWith("Welcome")) ;
+ l( L7 c' o5 I( D System.out.println(s.endsWith("World")) ;
" D! q) c, t5 Q. p" Z String sL = s.toLowerCase() ;
+ H* T: ^2 Q$ P+ F( D. C String sU = s.toUpperCase() ;
6 G" \: Q* p4 U; g+ U* K System.out.println(sL) ;' p* H1 w9 m# M! ~
System.out.println(sU) ;: X- j3 }) ~5 j: n
String subS = s.substring(11) ;2 h' b: W( d5 d: S$ j
System.out.println(subS) ;. O7 j+ f" k% t4 M; d% b" w
String s1NoSp = s2.trim() ;
/ a M5 v/ L5 @* O8 Y System.out.println(s1NoSp) ;
; _' V' H1 U/ I" c, ~ @ }' _5 p4 o9 i0 G3 Q# r
; e. x/ e' G/ X* a! J |
|