该用户从未签到
|
String : 字符串类型
N$ B. ?/ g6 Z$ Z& T6 h# K) \4 ^
9 A X; i# i+ e3 ~7 `* {2 d一、构造函数" i; H: }' o! j6 n# H1 |) A
String(byte[ ] bytes):通过byte数组构造字符串对象。
& I2 A4 `- K/ u3 Y ?8 d2 T String(char[ ] value):通过char数组构造字符串对象。# o5 m- I! N6 N' k* H
String(Sting original):构造一个original的副本。即:拷贝一个original。
, c2 O4 x$ m5 x9 g8 h& D# d String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。 5 ^) S7 U: h2 \
例如:: n2 s c0 ^( s5 t, S5 T9 f
byte[] b = {'a','b','c','d','e','f','g','h','i','j'};
4 M: W. l/ I, L/ j- x char[] c = {'0','1','2','3','4','5','6','7','8','9'};6 X M$ g! u( A1 J
String sb = new String(b); //abcdefghij+ t k' b1 C' f
String sb_sub = new String(b,3,2); //de
4 i6 e. l. q/ e% z8 [ String sc = new String(c); //0123456789
1 F; h9 s$ z( ` L9 D String sc_sub = new String(c,3,2); //34
G# N" q. S# P3 @6 } String sb_copy = new String(sb); //abcdefghij
6 z/ x0 K1 [: o _ System.out.println("sb:"+sb);
% g# j9 _( c: n0 s: ] System.out.println("sb_sub:"+sb_sub);& v- U9 h7 U- k5 z3 U- ~4 h$ v# E
System.out.println("sc:"+sc);0 [, H9 f( v( f5 l8 r
System.out.println("sc_sub:"+sc_sub);4 A3 T* d$ Q- A' ] J0 o
System.out.println("sb_copy:"+sb_copy);6 c- J: C4 p7 M9 \' B8 r5 h8 q
输出结果:sb:abcdefghij
, q& p' _; T2 x9 ?. E sb_sub:de* G9 M/ v. D& i) y% W
sc:0123456789
5 \, u% B+ Z0 y I% i) H/ F sc_sub:345 ~' Q* S7 h* [
sb_copy:abcdefghij7 Q5 H. U* B0 q/ v6 Z5 Y
" b2 _2 @: i8 ?
二、方法:8 k( {- b9 i- o$ C
% G. s8 t- Q! R9 J2 i3 c 说明:①、所有方法均为public。
' a2 O; n; a: l2 I ②、书写格式: [修饰符] <返回类型><方法名([参数列表])>
' H7 r; l* y+ q( v& j. N. {( ]3 _- a0 o& P* X( A& U$ Y; {
例如:static int parseInt(String s)
$ M A8 p/ V2 U0 D% K/ Y* N 表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。; @' N! s& f1 X4 V! T
( w0 m. Y; H) l1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。! G: y$ K' U- h# B# T( E( \; }) \
0 t+ P" K, H/ k# V g1 ~* z! o
" @* L# `8 Z6 ?' j0 n7 M; e$ @* J) C
) b4 Q4 A+ i8 X) g! o2 B 例如:String s = new String("abcdefghijklmnopqrstuvwxyz");; S# e/ h+ o- ?
System.out.println("s.charAt(5): " + s.charAt(5) );* i" ?. m1 T* Y
结果为: s.charAt(5): f+ U* R5 P1 p- O4 J3 d% ~, T
2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。! `1 l6 K4 Q' X
3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。
( P4 W& f9 U+ z n 例如:String s1 = new String("abcdefghijklmn");
$ n. W+ r4 [( V4 T% w! u, } String s2 = new String("abcdefghij");
" Y3 Q& ^' `) Q/ {5 j8 L% ^5 K String s3 = new String("abcdefghijalmn");
3 p! \1 t/ [: S2 j System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差
+ x7 u2 Y0 O' y, C! x0 f5 q System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差
/ D1 v5 x0 K- E6 A 结果为:s1.compareTo(s2): 4' w+ b7 E4 s% H2 P. N7 k) p
s1.compareTo(s3): 10
5 p4 V8 }- Y% X1 Y4. String concat(String str) :将该String对象与str连接在一起。7 B" H! u% B7 @0 A
5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。
- O1 ^; J) K4 y; m7 k5 H8 b% a6. static String copyValueOf(char[] data) :: u- z* S5 t& |7 U; O
7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。& B8 Y4 c' j! T V
8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。
7 Z* T" U( i. t. @4 r; v4 j# X 例如:String s1 = new String("abcdefghij");
5 h. E: `9 f2 h& @, }8 r9 h String s2 = new String("ghij");
G% e; Y- q5 @ System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );% M0 A' R! x0 A1 L. \7 G/ O
结果为:s1.endsWith(s2): true/ h/ F# ]9 L( K, s7 I
9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。: L( v! Q3 l u6 x
10. byte[] getBytes() :将该String对象转换成byte数组。
. C" |- T' p9 o1 b! p* M& J11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。
8 j. P# S5 \4 G* G2 g' W7 | 例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!: d# g5 f+ [. X/ N( s& J
String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!
8 }2 o( i6 q: A8 j3 j: t/ y! N% H System.out.println( s1 );& r7 S& L8 x& i7 y! \. t' f4 t
结果为:I love you!
# a+ p% n. [3 O5 k/ z8 \12. int hashCode() :返回当前字符的哈希表码。; ^& G) V" ]6 Y* {$ R
13. int indexOf(int ch) :只找第一个匹配字符位置。
; e) t( ^- w8 k' G4 G5 c14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。3 F, z$ L7 x- Q2 W2 U6 e
15. int indexOf(String str) :只找第一个匹配字符串位置。
' m. F/ o9 V+ v E16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。3 k* H2 w8 [ R% _+ Z$ L
例如:String s = new String("write once, run anywhere!");; ^% l+ X& Y4 [
String ss = new String("run");
0 Y, Z: S! l& u3 ~3 w2 G( S System.out.println("s.indexOf('r'): " + s.indexOf('r') );
/ V& m0 N& O3 R4 q/ r% y5 k" n9 } System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );
; i9 \' L# y! r1 F' v! v System.out.println("s.indexOf(ss): " + s.indexOf(ss) );5 W: i& g7 J! P. p
结果为:s.indexOf('r'): 1% v; C% v& }) m! M) I# p9 w
s.indexOf('r',2): 124 j3 s2 ^7 ?# {8 ]+ |* a3 p9 j
s.indexOf(ss): 12; `" X; j G" H! t& n
17. int lastIndexOf(int ch)
- D8 o" q; _* X$ P; P" l; l, |! }18. int lastIndexOf(int ch, int fromIndex), g9 Q8 n- ?2 q% A2 a4 e4 z
19. int lastIndexOf(String str)
: S, I L+ d: I20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。* q' R3 N' ?: C2 }! z. a2 b2 l
public class CompareToDemo {+ U5 b& o6 A( e1 s" d; c
public static void main (String[] args) {0 E9 V$ V% }7 C+ |
String s1 = new String("acbdebfg");. M7 p( S0 J- {+ C! T- A4 o
. N' Z( O0 D/ r' v* Q% A" \
System.out.println(s1.lastIndexOf((int)'b',7));
1 V" y' L7 ~+ x! n: {; D+ _& t }4 d, a! L/ _7 p0 ~
}
- O1 t& ^- _3 U2 F. M运行结果:5
7 N, U) d: i- z0 j: v8 U9 m (其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)4 R+ i( j# b6 @# h4 F. g, z
# l, B; y( `: [! t3 b s/ F
Y: C8 \3 e1 P* f21. int length() :返回当前字符串长度。) A/ R F1 L6 A2 f
22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。$ h9 i ^; K# u$ b; J/ b
23. boolean startsWith(String prefix) :该String对象是否以prefix开始。
# ?1 |, \# g1 ^5 P24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。
4 T3 `* _0 X+ R8 @: s) a! _4 Q! U 例如:String s = new String("write once, run anywhere!");
5 p* e! |+ J9 q4 v, X. i8 s, X String ss = new String("write");# p8 |0 r# Y0 l/ S8 l& m" c
String sss = new String("once");0 u1 }2 N# ^" d- H( o6 E8 A) A
System.out.println("s.startsWith(ss): " + s.startsWith(ss) );0 a( v4 m9 P. m" y N
System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );; x: z' b+ ^5 N- l* ]4 |
结果为:s.startsWith(ss): true: m% W5 t! f- X; s+ G# D
s.startsWith(sss,6): true: s# s/ a7 u4 L" ]- \8 R
25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。/ V3 {# _2 X* H! _ s
26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。# ~* q8 r! [7 a$ G8 n& ]5 A( a
27. char[ ] toCharArray() :将该String对象转换成char数组。3 a& R/ u7 d5 W" g
28. String toLowerCase() :将字符串转换成小写。
# e" b- e' E# ?) \29. String toUpperCase() :将字符串转换成大写。
# @, ~; i4 w- z! B3 e 例如:String s = new String("java.lang.Class String");7 G0 q. t1 B4 h7 p$ _7 R
System.out.println("s.toUpperCase(): " + s.toUpperCase() );
8 t$ h4 A1 W2 O& a8 O System.out.println("s.toLowerCase(): " + s.toLowerCase() );7 N) |6 W" j/ z1 e8 V; _# @
结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING
+ {: n( l9 X6 G) e- N! P$ L, | s.toLowerCase(): java.lang.class string- N1 I6 D X7 M' r' K; `
30. static String valueOf(boolean b)" y6 M# n; m. x. b6 ]
31. static String valueOf(char c)
4 V1 X1 g+ K& P: V, g; g' Z8 k32. static String valueOf(char[] data)2 S9 c& F7 P/ q& [8 @3 O" f; i
33. static String valueOf(char[] data, int offset, int count)
% w: G% ?* U" T' u' i: H34. static String valueOf(double d) z. j( @" n" C( b" O( |
35. static String valueOf(float f)6 Y3 [+ a) t1 w3 f _7 y# C
36. static String valueOf(int i)
+ {; F+ k5 Q3 Y6 I4 F0 N37. static String valueOf(long l)
& U; i1 R! ~% \4 v38. static String valueOf(Object obj)4 w( d1 [1 {. f7 b
以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。" z- V7 P- I5 x0 h( R; U2 R! f
* b9 V' g7 H ]; O0 a0 u! W
/ w& I0 u! d, f* z' F! J9 }
& x' \5 r% [! @9 b4 P/ d) E
$ U6 _& h& W+ ]* ?3 W) H( V3 ~
: H3 E' k1 T# e( s2 a: q, o* F# LJava中String类的常用方法:
9 N+ h' c4 P8 M, U1 g! e; k* S7 J( N( p$ m9 r' s
public char charAt(int index)
$ j6 y- Z, q W3 C5 ]. [. ]返回字符串中第index个字符;8 x! g$ X7 Z/ y
public int length(): g' Y$ J4 b; ^/ f" {6 ?5 E- |+ g6 \
返回字符串的长度;
% S/ _: r# P+ I' npublic int indexOf(String str)
7 R* M) X* l i! F% \8 D6 P' K返回字符串中第一次出现str的位置;
$ t5 f# ~* B/ D9 _9 w( Q; Npublic int indexOf(String str,int fromIndex)
' U8 _8 Y8 ?% h9 W, B返回字符串从fromIndex开始第一次出现str的位置;) d: G% A9 S& G/ t5 a
public boolean equalsIgnoreCase(String another)
: H6 M" H$ s7 v, y! \: Z: u比较字符串与another是否一样(忽略大小写);
; r+ x) C3 S+ j+ `public String replace(char oldchar,char newChar)
: ]9 }) `( B/ u9 b在字符串中用newChar字符替换oldChar字符; I* k$ A9 F2 s* V3 p0 ^6 T
public boolean startsWith(String prefix)5 p, R: u3 V3 p
判断字符串是否以prefix字符串开头;7 B/ G3 f3 B. l4 r7 N
public boolean endsWith(String suffix)+ I# A/ a6 y0 r- g& m4 q& W4 J( g
判断一个字符串是否以suffix字符串结尾;
) g- ?9 j% A/ Spublic String toUpperCase()
- s9 c, U9 d* R4 d }5 Q |4 k返回一个字符串为该字符串的大写形式;
/ P. E* o6 X' f' A O$ qpublic String toLowerCase()) D. u* ]6 l# h+ }3 f% r0 x
返回一个字符串为该字符串的小写形式) t e d! v' H+ G8 d5 _
public String substring(int beginIndex); A* m, J1 H) R$ Z
返回该字符串从beginIndex开始到结尾的子字符串;
. t* M" V6 x4 M7 Xpublic String substring(int beginIndex,int endIndex). E) s& X9 o2 A
返回该字符串从beginIndex开始到endsIndex结尾的子字符串
! H6 \! q. C, h. v _ g; Y% Ipublic String trim()
- B' f4 h/ l; y$ b返回该字符串去掉开头和结尾空格后的字符串$ C: A6 N7 @% G8 m2 g
public String[] split(String regex); D) Q8 C' D; M; n( K' F
将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组
' w( q6 {' }! m实例: - J: c1 h. [$ V. e5 \8 q$ P6 W
public class SplitDemo{7 Y8 l1 K7 l7 f) t
public static void main (String[] args) {5 b+ ^0 I' @2 _. k) h$ j2 B, C
: z5 H1 Z. g! { X9 c, v. ~' }
String date = "2008/09/10";
. M9 r. s" o! E$ `& w: V! I String[ ] dateAfterSplit= new String[3];
- m1 I4 p2 |0 ^9 r dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。
: n4 w d7 W v2 K2 w
2 k0 T* w2 Q x1 P6 R for(int i=0;i<dateAfterSplit.length;i++) S8 n: \% R7 X) ^! u6 u
System.out.print(dateAfterSplit+" ");
8 ?; G' |; W# v( w0 H }
% t/ Z4 j# {; @) `5 a, T. ?}4 I$ q4 @7 R! l$ X" P
5 K- N. }1 L- `运行结果:2008 09 10 //结果为分割后的3个字符串/ ?% r/ z- C7 X8 X2 a# e
, v% r( }/ |+ e7 s' F) H$ h
实例:
/ s5 ]4 `2 R/ V1 ?0 U W. |/ lTestString1.java:- f0 i% U4 `) W7 j# Z/ p+ V
程序代码6 i2 Q3 [! _ K# i) J4 O8 E# f
public class TestString1# U2 R7 ~9 u, h
{9 n9 h) G+ Q. F3 G2 C7 n
public static void main(String args[]) {/ l( c2 }1 `" U/ Q" ^9 t
String s1 = "Hello World" ;
5 F) p+ Y! R. L s0 |& u String s2 = "hello world" ;8 z1 q1 h* m- u6 q+ S
System.out.println(s1.charAt(1)) ;
* t: v4 }" p0 f- g0 c System.out.println(s2.length()) ;6 O' b' e- I+ o; _( q: q
System.out.println(s1.indexOf("World")) ;
% l8 d# R/ N7 P, N$ p+ |: D System.out.println(s2.indexOf("World")) ;
+ \4 z# s2 s1 X( A# L$ S* A System.out.println(s1.equals(s2)) ;
6 h' E& v! g3 o System.out.println(s1.equalsIgnoreCase(s2)) ;
3 w$ v5 l$ H2 f7 L2 B0 C( P. r) [5 r' V' v
String s = "我是J2EE程序员" ;" B* Z8 T+ v4 o
String sr = s.replace('我','你') ;
. M0 k7 s) k; x. @0 P2 @7 l: n System.out.println(sr) ;1 F% b1 `" o J, c4 v, W8 t9 s0 N
}
# X% l$ n$ N: m3 O8 q8 h2 {1 e2 P}
" |. S* z: ^; `8 Q% w [- x% ~& l6 F* c( E
TestString2.java:
) ?* S, [" h% ]+ E# }7 U. L4 [5 f; v! A程序代码
+ a8 U' a0 o6 x' L, o+ D* G3 g+ T- H) N) K
public class TestString2/ Q. {( n7 I# p2 }: p3 L
{
8 M* t; ~4 f0 g; F public static void main(String args[]) {
% M+ [: g9 m& o3 W0 y String s = "Welcome to Java World!" ;
3 }0 ^0 l: q0 C3 i* e! y String s2 = " magci " ;
: P9 V0 H! ~. N1 n! Y6 X7 [ System.out.println(s.startsWith("Welcome")) ;4 F/ n! M/ Q0 K% ^
System.out.println(s.endsWith("World")) ;) d; x+ Y# H- ^0 ^" n& ~6 D6 }
String sL = s.toLowerCase() ;
9 `) S% P: r* z& h String sU = s.toUpperCase() ;+ d" M; x4 C6 U7 t9 R. t
System.out.println(sL) ;
5 k# I1 L" U5 }# ` System.out.println(sU) ;
+ s6 N7 J# g4 O9 ` String subS = s.substring(11) ;
! U& y: P+ L0 p$ { System.out.println(subS) ;
1 U( x0 N! g# R- P& E/ E String s1NoSp = s2.trim() ;2 b7 C/ Y0 p9 _: e
System.out.println(s1NoSp) ;
; U; D' F- l3 a& g }# c# G4 ~9 o% H2 ^* }
- Z; r3 Y7 O' s7 x4 {
|
|