该用户从未签到
|
String : 字符串类型
- x- f" `9 T$ K- r9 ?
3 y* z) k8 A) E. F H1 A: i一、构造函数
' `2 E2 ~# ?. }: }* P; p String(byte[ ] bytes):通过byte数组构造字符串对象。7 f- v. {- m. ~( F3 B* C
String(char[ ] value):通过char数组构造字符串对象。
8 h1 D2 x/ m! I$ t) b' Y+ M String(Sting original):构造一个original的副本。即:拷贝一个original。
8 n4 {! e7 X; H! g9 Y# ^; s String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。 ! ^; @; H F; a" u
例如:
/ @- e. }3 z( v) |, [ byte[] b = {'a','b','c','d','e','f','g','h','i','j'};
$ @ |+ g6 a) ]( o+ S% ^0 H/ I char[] c = {'0','1','2','3','4','5','6','7','8','9'};
2 ^# y& a; b$ x3 H9 z String sb = new String(b); //abcdefghij% ?+ n5 F- n7 Y$ y
String sb_sub = new String(b,3,2); //de* ?3 \" S" }& a& P- t. m! `
String sc = new String(c); //0123456789" H/ K' |6 L6 Z) I) T; S7 Q
String sc_sub = new String(c,3,2); //34
1 \( Y6 }/ z* Z, E$ j String sb_copy = new String(sb); //abcdefghij 7 [) F+ _2 I- b( g! a
System.out.println("sb:"+sb);
( ]/ A1 G+ W/ g+ [9 G! H. R8 W# Y System.out.println("sb_sub:"+sb_sub);& @, m j% v# n: S" W" J5 a R
System.out.println("sc:"+sc);
/ \4 D5 {0 ^$ K System.out.println("sc_sub:"+sc_sub);/ q. P6 q3 p; S- I
System.out.println("sb_copy:"+sb_copy);& l1 A/ P8 [+ K. c1 F4 D8 j
输出结果:sb:abcdefghij
2 g/ p9 F- g$ _, T+ X; Q2 y sb_sub:de+ G2 u6 a0 d) e3 O
sc:0123456789
% D: |, _$ H' K( q sc_sub:34
( A) _7 }( ^! m+ `" k6 E0 @( o' I. w sb_copy:abcdefghij6 U K, g. S/ O! U$ \! u2 c
/ W* J) i7 ~$ O4 {3 E# g二、方法:0 d4 \+ U- I- d
$ G6 Z# N2 C8 v
说明:①、所有方法均为public。! Y% [' P9 y! X; ?3 I- O- R
②、书写格式: [修饰符] <返回类型><方法名([参数列表])>
1 a7 V4 w2 F+ P, }9 P$ K
. }) b8 z5 L. C i' @ 例如:static int parseInt(String s)) z% I: T1 L4 v" y+ t) S' z
表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。
7 X2 d6 l4 T q
, _; [- w$ n3 D" a( Z! `" y1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。
/ o- M d$ N' ?7 m* w) z+ c) D. H A/ u1 `& I8 u6 \* I
* r7 d! g, T/ A# |3 R+ r2 T
+ {( |; I5 l8 I% t1 |! J
例如:String s = new String("abcdefghijklmnopqrstuvwxyz");; V- D* A$ s" e, `
System.out.println("s.charAt(5): " + s.charAt(5) );
% l! d, `/ e/ y8 Q! z" B/ { 结果为: s.charAt(5): f) t% Q4 a; k7 E- n2 ]2 A' `! F
2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
! X2 T; r5 w) x0 G+ v3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。7 w5 ~4 F/ \/ O' @
例如:String s1 = new String("abcdefghijklmn");
- f% T3 R9 b; o# S. C# n2 b7 M! c String s2 = new String("abcdefghij");4 E7 ?. y g6 q% T
String s3 = new String("abcdefghijalmn");
7 F/ P0 n+ F( S7 N1 D" H9 O! b System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差1 d* D' |/ j! n5 \$ Q8 H/ {
System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差
2 r& @( ]. ~/ Z9 v# x$ Y6 b 结果为:s1.compareTo(s2): 4
: R+ v0 ?5 }+ V6 a1 X s1.compareTo(s3): 106 m6 I1 Z! T) `
4. String concat(String str) :将该String对象与str连接在一起。
( _# C' N& t( e4 u) W8 z5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。
) N# i% h/ k4 O* h% F6. static String copyValueOf(char[] data) :
8 G+ H* D$ i) I" F8 b7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。7 a. f. W. r- [: m0 C
8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。
r+ c1 g1 d1 W, f( r' t L y 例如:String s1 = new String("abcdefghij");
2 U2 E- G+ L: K9 X3 w String s2 = new String("ghij");
9 f' s0 d- S S# l System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );$ c+ q9 M9 { a& D" D
结果为:s1.endsWith(s2): true
+ O5 V9 c6 L- `8 n, @9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。 A- V I7 n5 Z
10. byte[] getBytes() :将该String对象转换成byte数组。9 F4 A' G. n4 \( v) H
11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。
$ L) m5 Y2 P3 W+ i2 ^+ v$ u 例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!. Z0 N" f; x) _# b* [, J
String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!
5 D/ j9 D* M, } a, g5 x5 g System.out.println( s1 );* R3 o* ?' I/ B& _7 G5 a' m$ M8 o6 ~
结果为:I love you!
) j/ U2 w# o+ g3 M4 _( N5 U Q12. int hashCode() :返回当前字符的哈希表码。' n# {$ ?- p& m5 l+ V2 i% _
13. int indexOf(int ch) :只找第一个匹配字符位置。
" i- M" Q1 ]" h' M14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。
) o, e- _: E7 [. i v9 v7 `" q$ |15. int indexOf(String str) :只找第一个匹配字符串位置。$ w. ]; j0 z2 J; @6 `. p5 b
16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。
& o; |- p/ X! A% t3 t& V% { 例如:String s = new String("write once, run anywhere!");
9 I* R1 L" T( p8 a J String ss = new String("run");
* h; t7 _' @3 Z5 X System.out.println("s.indexOf('r'): " + s.indexOf('r') );
9 \& ]; \8 y" z4 d+ [" h System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );
# @) q7 g* Q& f% K System.out.println("s.indexOf(ss): " + s.indexOf(ss) );' ^5 F5 A0 N+ Y4 Y$ c8 ?/ Q
结果为:s.indexOf('r'): 16 |! X* Z* u- S) W: g& W" h
s.indexOf('r',2): 12
2 l, z3 J7 @9 M s.indexOf(ss): 12; V4 a7 c2 o' z% U
17. int lastIndexOf(int ch)4 G7 c ~* d4 z/ m# ^
18. int lastIndexOf(int ch, int fromIndex)
9 ^+ Y5 y. o6 N6 |3 c6 p, f9 o19. int lastIndexOf(String str)
7 e0 k: u9 M2 y& w- c' C- B20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。- v: v) d( ?1 v4 b* L5 [
public class CompareToDemo {; Q% y/ Y3 _ ~. m, b* ~5 c
public static void main (String[] args) {
+ N3 P- K4 f: c7 s& b( K' h+ L String s1 = new String("acbdebfg");
# ]7 ]4 U- h7 l" _% o: R: d! l6 S6 o- C' O: P
System.out.println(s1.lastIndexOf((int)'b',7));$ q9 {5 K" G* {8 Z" u6 W/ }+ s, O4 J
}% a8 P+ R7 }& s2 O6 u
}
0 I4 F; E* g3 |5 W$ t运行结果:5& v9 r( m& [* S2 ~. E. o
(其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)6 l4 @* o3 c3 Q
! c1 `! O: _: w4 R: f/ {8 @
: p9 @! G1 h% D( G21. int length() :返回当前字符串长度。. `. u% U' P" s( `
22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。
" Q0 |6 L @) V' f. X& l. H! a7 s7 `* S23. boolean startsWith(String prefix) :该String对象是否以prefix开始。
* b" O% ~2 |( O& v' o& O% R24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。
4 d9 N' W) l' B A( e 例如:String s = new String("write once, run anywhere!");, v$ G( Z: q/ ^- u8 K& D! P5 v3 [
String ss = new String("write");
( T! L8 E3 U& z. W String sss = new String("once");
2 E0 ~# }: x: w( F2 c; p) x System.out.println("s.startsWith(ss): " + s.startsWith(ss) );
9 y8 I/ z- D% N. k System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );
H! V: y5 x: O _5 s N 结果为:s.startsWith(ss): true- m# J1 A7 H) s( \" I* H3 N- G
s.startsWith(sss,6): true! K" _; n: }& j3 }4 H. b# E
25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。
& j$ i9 \' B0 f( D26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。
% L/ k k: h3 P! e. {8 j3 l: g27. char[ ] toCharArray() :将该String对象转换成char数组。
$ A& F& H( y. ?4 J6 ^: o28. String toLowerCase() :将字符串转换成小写。
, ?# r' E5 v. l6 T29. String toUpperCase() :将字符串转换成大写。
( v [/ A Q6 O% g: q 例如:String s = new String("java.lang.Class String");
4 p @% o* y# y( D7 [4 m" K/ S- l System.out.println("s.toUpperCase(): " + s.toUpperCase() );
& Y7 ~2 M! o3 b7 T1 S System.out.println("s.toLowerCase(): " + s.toLowerCase() );: P' c8 d I: P% W2 E
结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING
& M- K7 Q- y4 a( \& R& u s.toLowerCase(): java.lang.class string
- D7 S; `" V& _+ \( M1 R D1 R30. static String valueOf(boolean b)% m* z7 ~2 g' _$ t( G
31. static String valueOf(char c)9 U4 k0 v/ S& i- A" s* z7 s
32. static String valueOf(char[] data)$ O1 H& B- A9 i2 S! F# S
33. static String valueOf(char[] data, int offset, int count)
: ~( w2 X8 F! q% J9 f+ J34. static String valueOf(double d)) v+ G- u: K$ r5 ^2 Z) _; E
35. static String valueOf(float f)
5 y( R2 D, F! _& M6 `36. static String valueOf(int i)
2 h# m3 N/ Z' e7 V; H) q/ U4 M37. static String valueOf(long l)
& M8 @$ M8 m$ E4 @38. static String valueOf(Object obj)
+ T* Q5 Z T, T2 ~* ] 以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。' q7 w- M$ ?) s8 y
% p9 G+ K' q5 P0 v- Y: T) k7 @/ B0 H, F7 V
7 F) `' r. X- }5 ?% r; ~+ ~, w
) |1 Z {; ]1 N2 c4 u6 t
& P- o U- v4 U8 J8 O# S" W
Java中String类的常用方法:5 N2 x7 `2 v8 J8 \: h1 M
* E* f7 e1 H! Q5 e+ x- Y5 w$ _% ?public char charAt(int index)1 u" ?0 d9 a& {5 c \0 H
返回字符串中第index个字符;/ e6 M, d$ P- c$ H/ H, S
public int length()
3 Q. y7 E Z6 e# V) e6 S返回字符串的长度;# U6 D0 c& K& Q* c4 z/ E
public int indexOf(String str)
# p6 T4 S# e6 _! L5 P; v5 _返回字符串中第一次出现str的位置;
; U7 ?9 s: N9 l0 R, tpublic int indexOf(String str,int fromIndex)4 q% j# E8 x `8 H8 b/ Q
返回字符串从fromIndex开始第一次出现str的位置;9 A% Q& I0 t% w& E" W7 b
public boolean equalsIgnoreCase(String another)
# q3 B3 D, |) l9 w0 e0 Y比较字符串与another是否一样(忽略大小写);
! f: j9 ~( h& v% @public String replace(char oldchar,char newChar)2 D. [4 B: j: ]: r0 {4 h7 O
在字符串中用newChar字符替换oldChar字符+ `# A$ ?# f' ?0 E% K7 B
public boolean startsWith(String prefix)2 Z# P+ p. R1 M9 T
判断字符串是否以prefix字符串开头;
4 l t1 G$ h q/ T, n4 z! o, zpublic boolean endsWith(String suffix)
1 D/ N6 d9 o+ m6 x" K( q) Q判断一个字符串是否以suffix字符串结尾;
# o" X; \5 s8 K" u! Q0 Dpublic String toUpperCase()
9 B0 P8 f( T4 d3 p3 o: n返回一个字符串为该字符串的大写形式;
& T- _& ]" W3 o0 r& O( wpublic String toLowerCase()% ], R; S% E& D; }$ t. `
返回一个字符串为该字符串的小写形式
0 M; D, c6 I8 H" ]% G# Mpublic String substring(int beginIndex)
: t$ j$ P# l: N6 j返回该字符串从beginIndex开始到结尾的子字符串; [/ g+ {1 B' B5 n
public String substring(int beginIndex,int endIndex)+ @# O6 m6 ~4 m& j
返回该字符串从beginIndex开始到endsIndex结尾的子字符串# S( T K" t/ K& W' r
public String trim()
% c5 t# }4 H0 f; a* [/ {, Y- G2 k返回该字符串去掉开头和结尾空格后的字符串
* c3 H& |: `5 m& |( H. upublic String[] split(String regex): e; ~6 o8 x+ m- d3 Y
将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组0 w \5 d6 c& B7 X* T9 G; @9 j
实例: ) P7 ?' o1 a' Y# n; A/ `
public class SplitDemo{+ p/ Q3 [* z+ V. A
public static void main (String[] args) {
8 _# W0 a$ _, m( R: G2 q* S
" u. K/ g$ M, W( \$ R String date = "2008/09/10";
* G# F4 V! i% P" j e String[ ] dateAfterSplit= new String[3];% k: }2 N0 B+ ~+ z0 e3 G' `
dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。
; z0 K& k9 @ S# Q& Y3 i3 q$ r! j' m
0 P9 n( P7 Z: ] for(int i=0;i<dateAfterSplit.length;i++)" d% |0 {% }$ U+ T5 K* n
System.out.print(dateAfterSplit+" ");
% e) a! [! @0 W" }1 { h G }) J+ I& c$ p1 |5 b- o) B4 v
}+ v* ^. M; U+ i' C
6 x Q0 m& w6 V( J. A运行结果:2008 09 10 //结果为分割后的3个字符串 N/ w7 H$ P- Y+ X' i
4 l6 ]4 m% p/ q2 q& f E& W! Z
实例:- X8 E* u* s2 c9 z! u# _- H
TestString1.java:
1 {+ F' T0 p# u: v- W( U- F$ P程序代码6 p; p% H: x) D) h2 ~
public class TestString1* G' u( Z8 v7 N+ n; O
{
' k. S% r. Q! |/ i- Y public static void main(String args[]) {
& S; c8 J: F* ]! [) s) n String s1 = "Hello World" ;/ `/ T# Q. m! o# R+ X/ Q; L! r0 N8 o
String s2 = "hello world" ;' _3 l# T# Z4 R( y4 T& i& f* K# y4 r5 j& g
System.out.println(s1.charAt(1)) ;
+ y7 j: J% L. S E* ~+ k# d% F A' P5 j System.out.println(s2.length()) ;
$ r0 ~. k- `9 B System.out.println(s1.indexOf("World")) ;
: v' l X) F2 ^7 Z# [0 o3 f System.out.println(s2.indexOf("World")) ;
+ }, H9 }$ I1 l/ j3 y; i System.out.println(s1.equals(s2)) ;2 e Y2 u0 v& ~* w
System.out.println(s1.equalsIgnoreCase(s2)) ;
* K# E$ g, q% n) {: r6 s" u- }# O) M. j4 a7 p6 L
String s = "我是J2EE程序员" ;/ i4 F, U+ K2 _' u' \6 z
String sr = s.replace('我','你') ;, U% Z1 t, C2 m! M
System.out.println(sr) ;
; K* G) F# y& V* P/ _ }
. Z8 u3 o- t3 I0 z}( z8 V! O( Y% z' _# J7 [% s6 L; [4 E6 x
: M) w! X6 [( L8 x: \( yTestString2.java:
. d; W$ p" o: y; t3 S5 b* r程序代码6 h8 n' b/ i4 v/ r' P' B* p
$ C- o) C8 o7 N" E4 m' ?public class TestString2& }4 n4 ?& h- k0 m
{
, N* B$ x7 I6 R, V public static void main(String args[]) {
3 `2 ~, m8 U/ B; W/ a( g String s = "Welcome to Java World!" ;
) F6 k4 t( h, Z, h String s2 = " magci " ;2 U) X# Y; U. K ~
System.out.println(s.startsWith("Welcome")) ;
- x& N# `/ e* B- P* `( Q System.out.println(s.endsWith("World")) ;& @- D- a4 F i% g7 n2 S2 `2 {- W, q2 c
String sL = s.toLowerCase() ;
) W5 H! w" Y: U! N String sU = s.toUpperCase() ;1 P& p0 F$ m: q7 }; _* b1 C1 G8 t
System.out.println(sL) ;
7 A3 i$ E8 {% k) x* ^( T% a System.out.println(sU) ;
: n3 v7 _" t/ K) r String subS = s.substring(11) ;% K2 `1 T/ b" | e, R4 y
System.out.println(subS) ;
2 z N: K1 G2 |8 o# W, a' K String s1NoSp = s2.trim() ;% r5 O. y a6 _* A# Y6 D' ^" X
System.out.println(s1NoSp) ;8 _* Y6 \: @: f4 |
}
$ f+ j- y- O; N- V) w j& X) m% h. x/ M( ~8 R N4 A6 \
|
|