该用户从未签到
|
String : 字符串类型) N" j7 Q) A5 B8 D
. x4 ]* I% e3 K( Q) u% B' R& N4 F1 B一、构造函数% {+ a1 j" x0 x9 C4 J% P* F5 L3 A
String(byte[ ] bytes):通过byte数组构造字符串对象。6 x0 ]' f1 A8 S; Y( P
String(char[ ] value):通过char数组构造字符串对象。5 t8 l6 F" r) Y; I+ e
String(Sting original):构造一个original的副本。即:拷贝一个original。! ?% ?: N5 R( Q
String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。 . B+ B% c) }- E
例如:' \5 C6 W6 L3 S7 l& g3 |/ s
byte[] b = {'a','b','c','d','e','f','g','h','i','j'}; c% S3 ^5 K+ A! y* a' _4 `; @
char[] c = {'0','1','2','3','4','5','6','7','8','9'};) x2 e e2 I& |3 V- |7 R
String sb = new String(b); //abcdefghij0 X, l: c7 Y9 e* V4 M
String sb_sub = new String(b,3,2); //de* H* g* H2 d! }( n
String sc = new String(c); //0123456789
, d2 M4 m" A) c9 G% { String sc_sub = new String(c,3,2); //343 L6 ^/ b$ _+ q0 D2 m3 W6 _
String sb_copy = new String(sb); //abcdefghij ' f* p( v, S4 S0 M
System.out.println("sb:"+sb);! W/ S. H# j0 Y9 c3 n$ J
System.out.println("sb_sub:"+sb_sub);. t6 M! ~# T& s3 z8 p: q
System.out.println("sc:"+sc);
* `; \2 S: G: c: Y5 \: W System.out.println("sc_sub:"+sc_sub);& G4 R# T0 a- U, \
System.out.println("sb_copy:"+sb_copy);% i0 @5 ]1 M' O! d- c
输出结果:sb:abcdefghij
0 n+ J5 b" i- s0 j3 ^7 [- O sb_sub:de
; t+ D2 }: W- m8 U: @% E! F4 s5 h sc:01234567896 c2 K& i) J4 @4 d, W l7 M
sc_sub:34
2 e; p8 A: I b) X sb_copy:abcdefghij
' N4 W8 p1 w- C) h
( M/ O) ?4 n; N! S( u二、方法:1 o& H7 u7 i8 m3 [
2 d% s+ X0 w9 X8 F9 J9 u 说明:①、所有方法均为public。
6 J2 n! j1 E3 q- d! P) e ②、书写格式: [修饰符] <返回类型><方法名([参数列表])>' _! ]5 J* G1 k% U! e) A6 k
( J) t D" V' Z6 R
例如:static int parseInt(String s)9 D$ W, j4 O& c: M- l S
表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。* P3 M6 N b; f% W
" O9 p9 B) A# \4 [% W
1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。
2 i: m, }" M8 j0 S8 [/ L7 ?8 I" i6 C( ]9 @, J
9 ]9 Z3 `, j3 h2 v' r( a+ V
! Q: ^9 E7 R' d8 h6 O9 y/ v) S
例如:String s = new String("abcdefghijklmnopqrstuvwxyz");- ~, M* o( _ H3 {. ]% Y3 }
System.out.println("s.charAt(5): " + s.charAt(5) );5 e5 B/ f1 B5 s" A( n# P
结果为: s.charAt(5): f
) r4 e# w2 j4 L8 L2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
3 G. x. Q; j8 k' {/ O: g0 P3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。4 T! m2 O5 s" z& R. Q0 L
例如:String s1 = new String("abcdefghijklmn");- f. o6 B6 N7 ^3 l, |. o3 _
String s2 = new String("abcdefghij");, _( [, U- o8 e9 k' C9 F" S
String s3 = new String("abcdefghijalmn");
9 h3 j* w: T* j' A- o System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差: w3 b$ z, d% D7 u2 l9 R
System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差6 e; J- |/ S* g2 N9 X! y( @+ Y* I
结果为:s1.compareTo(s2): 4
. V: ~9 h! k# g$ C! ?4 [) o/ ^! ^ s1.compareTo(s3): 10) O! E0 y) U3 p7 s. h* @" l. s
4. String concat(String str) :将该String对象与str连接在一起。! c/ {) y; _& t- N
5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。
: |6 f* x4 C# `" \$ g8 ^1 M6. static String copyValueOf(char[] data) :: c5 I& N2 h, o8 Q+ z' b
7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。
& z: |: h( v! t. W1 d, {% ]8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。
' S/ n, l9 F1 {* f 例如:String s1 = new String("abcdefghij");
5 g) m; g8 x0 X# X; L D String s2 = new String("ghij");
0 V% B0 X# t1 h1 j5 |+ d System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );! s; U$ }- ?8 \) s4 E9 D
结果为:s1.endsWith(s2): true/ B# F D/ T; }
9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。
C/ Z% {0 I [, i10. byte[] getBytes() :将该String对象转换成byte数组。+ q2 ?6 F) ?$ @7 ]6 E; O
11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。# N0 z) w- w) k" a1 H' o- N
例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!2 {9 a" x5 ]) C2 S, Q
String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!( ]9 f3 ^& C' W# G4 [' M) a' v
System.out.println( s1 );
: ^, d9 L7 t2 X 结果为:I love you!( a, q0 n- p' t9 q7 I
12. int hashCode() :返回当前字符的哈希表码。+ d* [; P- t2 s
13. int indexOf(int ch) :只找第一个匹配字符位置。
: Z7 M" o, |7 R4 s14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。
- q) z# _( p. E5 m2 a2 n/ K15. int indexOf(String str) :只找第一个匹配字符串位置。
1 @9 i9 c8 o" d1 N16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。
# e' H$ M( D- }; }/ ~3 B f; R8 i% n 例如:String s = new String("write once, run anywhere!");
! `, {& j* T6 { String ss = new String("run");
! o O5 d1 l8 z, F5 s System.out.println("s.indexOf('r'): " + s.indexOf('r') );8 w- [4 X' o! W8 I2 ?: y3 J
System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );
; ^+ U e1 D4 I System.out.println("s.indexOf(ss): " + s.indexOf(ss) );. s7 O+ f5 e: h0 `7 t
结果为:s.indexOf('r'): 12 B/ u3 y2 Q( V" a6 h$ b9 t1 m
s.indexOf('r',2): 12
+ c! T- M: L, w! `; N s.indexOf(ss): 12# G9 s6 N% r" B6 M: C. X
17. int lastIndexOf(int ch)
' X! _* @2 I( M5 m; J18. int lastIndexOf(int ch, int fromIndex)
5 _: Q* k1 s% V( i1 ]19. int lastIndexOf(String str)5 p' t% z: i9 _ p5 L: ~
20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。
+ L5 Z! d4 }7 y+ B$ V) Ipublic class CompareToDemo {- n% l* d! s* c7 h1 c
public static void main (String[] args) {* }9 X$ }6 g9 e$ b
String s1 = new String("acbdebfg");7 H9 @! ^1 r0 z) Q3 a
6 `& C# K/ `! @" G8 f* q System.out.println(s1.lastIndexOf((int)'b',7));& t8 D$ o2 L3 K3 X& W9 j/ u
}
) i V q4 q- h}3 {1 l3 S1 m* a2 |
运行结果:5
/ U9 k0 e K- H- ] (其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)
' Y6 ~( `* Q' _7 m$ l
8 X0 |! }- |) m8 x8 Z# g& h
& W# Q4 I* b. [21. int length() :返回当前字符串长度。
4 p& K! r! l7 e/ s7 U2 e22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。6 h8 M# i( J8 Z6 C0 X
23. boolean startsWith(String prefix) :该String对象是否以prefix开始。
" F! b" t$ U" v0 g" R24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。
6 |5 P% Y4 I9 {: _4 K0 j" s 例如:String s = new String("write once, run anywhere!");1 y- V# f- c3 W. {3 s' ~2 \3 p1 ]2 a
String ss = new String("write");0 G0 |6 i' g0 J8 i0 r- m& }
String sss = new String("once");
8 F& b6 f$ ^# f& x# g1 I7 H* g/ O System.out.println("s.startsWith(ss): " + s.startsWith(ss) );
" j) u$ d2 |2 P# [ System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );( v# Q+ k p3 r9 W" v i: \
结果为:s.startsWith(ss): true
& o' H+ r( w4 Y, c$ p s.startsWith(sss,6): true( T' O2 B6 _1 ?# _
25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。9 B' A/ k0 P! v
26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。, O. L$ a" n* f, C q. `
27. char[ ] toCharArray() :将该String对象转换成char数组。
3 s. Z! C& V! t' d9 o8 O- F28. String toLowerCase() :将字符串转换成小写。 i3 L/ d8 f# t& O& O# g4 I. i
29. String toUpperCase() :将字符串转换成大写。
4 N& V1 L6 r% Z 例如:String s = new String("java.lang.Class String");
# q# H+ g4 X v8 r System.out.println("s.toUpperCase(): " + s.toUpperCase() );
8 i+ M5 @( ]* j7 F System.out.println("s.toLowerCase(): " + s.toLowerCase() );2 D5 R6 | L) A+ L
结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING
5 X! a' M* G; q6 G s.toLowerCase(): java.lang.class string
$ d% p2 L6 g+ s$ X30. static String valueOf(boolean b)
! [* x7 a6 f0 e/ q' _31. static String valueOf(char c)+ ~3 m! I5 |' S. V4 e- \
32. static String valueOf(char[] data)
* c" U" g- h' `33. static String valueOf(char[] data, int offset, int count)+ l! P. _, ]. r8 \0 y
34. static String valueOf(double d)8 J$ k, ?7 @& V! y; V& T! p
35. static String valueOf(float f)
! w o1 i$ G9 ~- x. ~2 S5 j5 [36. static String valueOf(int i)) [6 x- }' z+ K3 _' x+ m' j# |
37. static String valueOf(long l)& z' h0 S+ U, J# r" Z2 [
38. static String valueOf(Object obj)
* w: y: @1 P% A 以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。/ V4 C' V5 U. H1 A- u! N* i- y
1 A+ c. f8 |- [0 O( I
+ f( a1 m6 p) M; r9 q( f5 T, m9 g
, ]6 @* d A4 G7 n% z8 L* F
. {: ^" \) l# Q2 G' U
! o- X2 L9 e# f, a+ J c9 W& {Java中String类的常用方法:6 `$ K. ?7 f% X, ~0 {6 v# S
! P! l8 h: S# X; U5 H) U! `5 d8 Rpublic char charAt(int index)( p( f1 C4 @( x2 e! S3 r, G
返回字符串中第index个字符;
6 L# c1 ^+ [: hpublic int length()7 m Y) H J8 g# s* ?, c% S2 B( h
返回字符串的长度;
' ?+ b" Y% b9 b- b, t& Lpublic int indexOf(String str)( Y4 y9 z" t* \& v
返回字符串中第一次出现str的位置;9 Q: ~7 M( l& e9 f2 ^
public int indexOf(String str,int fromIndex)
2 p' p* T `4 r返回字符串从fromIndex开始第一次出现str的位置;
3 K) a5 J! Q3 t- Ipublic boolean equalsIgnoreCase(String another)
" p7 i" ~* O1 i i比较字符串与another是否一样(忽略大小写);
8 @# T# w" ?/ ?( s. Ipublic String replace(char oldchar,char newChar)
; y$ v7 o5 o( P3 K. Q% ^" @在字符串中用newChar字符替换oldChar字符1 i& ?8 w! k! ~- X8 }
public boolean startsWith(String prefix)2 g+ v5 Q) `6 L
判断字符串是否以prefix字符串开头;# }& c8 V# o2 o: p- G
public boolean endsWith(String suffix)
1 S% C8 J9 F7 o- q7 F判断一个字符串是否以suffix字符串结尾;- B% O: W: @ ~) o
public String toUpperCase()" j' f& `" G2 g3 z
返回一个字符串为该字符串的大写形式;
- M# E& c6 Z- S% L8 m/ \public String toLowerCase()
4 ^" [5 j9 @+ |% {. g6 O返回一个字符串为该字符串的小写形式
# I( D# Z9 j8 r4 s1 |) ]& Mpublic String substring(int beginIndex)
& C# o2 R& w% W5 h* ?$ u$ f返回该字符串从beginIndex开始到结尾的子字符串;
S' m F% q$ `# Z6 d# R, fpublic String substring(int beginIndex,int endIndex)
5 U& W+ ?8 O7 b$ P; }. c y返回该字符串从beginIndex开始到endsIndex结尾的子字符串
7 N8 B( |6 @: ]public String trim()
- x/ V x! K1 F, R( X返回该字符串去掉开头和结尾空格后的字符串, J% X' A2 E7 f5 I
public String[] split(String regex)
3 q7 p; T/ z, ]( b# V8 w Y n将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组
: u$ k1 g% ^' y/ h* q- p9 C实例: * j$ \6 M0 }5 m r# b
public class SplitDemo{
: K4 a8 j3 @( z7 d/ z public static void main (String[] args) {
3 c) D8 R& r9 y" Q- R, w# j( t0 b' g4 k8 @# `8 u
String date = "2008/09/10";
1 U. O" V3 K9 j- C/ n5 P8 J: i String[ ] dateAfterSplit= new String[3];7 H3 G ^0 r8 Z7 J; I% D
dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。
* i! H; G! v- b g% h
% f* [7 I4 n& I for(int i=0;i<dateAfterSplit.length;i++) R& g" }/ `/ {3 \
System.out.print(dateAfterSplit+" ");7 S8 ~& x; ?$ x* Q( H
}' m. O9 V" g* |% Q# V
}+ ^3 h: ]7 {2 i0 s% I! b
8 }( _+ Y3 s! ?; K- x8 |2 Z3 s, W运行结果:2008 09 10 //结果为分割后的3个字符串2 |+ h6 Q4 d$ l+ g" a1 J8 G
7 g' |2 j; M; d j- H) x0 p c实例: { O& u# e$ W7 A. y$ U0 W1 J
TestString1.java:+ z) G e# d9 T! O
程序代码0 C: E6 U8 r Y0 s* ^1 u
public class TestString10 \0 T0 o M. X6 B' W* s7 c3 Q
{
8 }* P* ~! Z# I& K1 T1 s' Q0 L9 H public static void main(String args[]) {9 e# f- I3 o. ?( @5 Z
String s1 = "Hello World" ;
$ |- M; K( c. r$ U% V String s2 = "hello world" ;
2 N: h9 }+ F7 L' E/ ` System.out.println(s1.charAt(1)) ;
) T& l* n% E0 _. V- U6 k System.out.println(s2.length()) ;: a, f, [$ y+ h5 a& _2 `
System.out.println(s1.indexOf("World")) ;
) }1 R4 ^* V; a* y$ q System.out.println(s2.indexOf("World")) ; I/ W! V6 f5 q6 D7 Y3 f
System.out.println(s1.equals(s2)) ;7 h$ ?) j7 y4 |+ {# g
System.out.println(s1.equalsIgnoreCase(s2)) ; f2 n/ y( ] L: ~
+ t' P3 m' P5 l. c3 ` String s = "我是J2EE程序员" ;, h! e0 A, V" e% `* w
String sr = s.replace('我','你') ;
8 e1 B }& [) J4 \9 I/ ?1 n$ Q- i System.out.println(sr) ;
) T7 E+ R. x" J8 [ }
* |: ?$ X+ h/ ^}
! X0 ~7 S0 e# T7 o. X- b1 t) U) Y2 s/ S! b
TestString2.java:& h9 D" k9 A7 u( y% c* o
程序代码
; ~% W3 D+ G2 M
0 Z$ Q, C& Y! T4 f9 S! T. fpublic class TestString2+ I' i: _0 l# H5 L
{
0 i7 y5 P/ i5 o9 T9 G2 r5 D public static void main(String args[]) {$ r# l3 S+ Y# E* T
String s = "Welcome to Java World!" ;
* j7 ^7 V' @1 U& |% z String s2 = " magci " ;
8 K! W, Y. W7 Q/ I7 ~ System.out.println(s.startsWith("Welcome")) ;
% G$ T7 Q K+ M+ W. z/ i System.out.println(s.endsWith("World")) ;
) |( [% m& v8 y- f5 t9 i String sL = s.toLowerCase() ;. f% W/ z% L3 B" A! f6 a+ n
String sU = s.toUpperCase() ;
1 K# R1 [' k0 m! }& o; W0 _ System.out.println(sL) ;
$ B* k# l! ?/ f! E' [1 C# @. H System.out.println(sU) ;
+ v- T- V/ O- s7 a+ Z' { String subS = s.substring(11) ;
; ^( y9 m6 A8 U" W System.out.println(subS) ;& V- k7 p( x9 N7 B0 h# ]
String s1NoSp = s2.trim() ;
|* N1 s" d& @ System.out.println(s1NoSp) ;
/ P- ?+ A8 ^& ~& J7 z } P; n" U7 ?# U$ ?: L
0 Q: i$ V- q! H9 l Q |
|