|
该用户从未签到
|
String : 字符串类型
+ J/ n$ a8 G s* J( _ m3 ^$ s
$ e; d& n8 p7 X5 d7 s2 B$ n/ q一、构造函数7 y2 L; K% t7 _- n. ?
String(byte[ ] bytes):通过byte数组构造字符串对象。$ l0 d+ w0 P' G( E# V
String(char[ ] value):通过char数组构造字符串对象。7 M: i v. Z: U9 J3 T6 u0 P" }. Z
String(Sting original):构造一个original的副本。即:拷贝一个original。
7 v1 p$ L' a" ^# V' h) p7 H String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。 8 I* H2 W0 ^" K' X5 v
例如:
$ T6 @) z7 d( ~6 L% ^! u; U6 e: ^ byte[] b = {'a','b','c','d','e','f','g','h','i','j'};) S: V) a1 l* H6 Z3 A
char[] c = {'0','1','2','3','4','5','6','7','8','9'};7 x. k7 F; g9 @/ Y+ ^
String sb = new String(b); //abcdefghij
2 H, J+ C" T4 K8 x# f String sb_sub = new String(b,3,2); //de
$ \) ?( l* P- }. a String sc = new String(c); //0123456789
) ?+ X+ `# m+ [* U% z String sc_sub = new String(c,3,2); //34* ]) n' A( a: V! d2 w5 c, X
String sb_copy = new String(sb); //abcdefghij ( P% B6 } O7 u7 t# Y: j
System.out.println("sb:"+sb);* _$ b5 l7 {" T, T) k% I* M
System.out.println("sb_sub:"+sb_sub);
' `2 M; ^. | g# m System.out.println("sc:"+sc);
7 X- T% [3 c: g+ s' [ System.out.println("sc_sub:"+sc_sub); d# C' Q3 f* l! L
System.out.println("sb_copy:"+sb_copy);6 K' p* [0 X4 S; }2 E8 m
输出结果:sb:abcdefghij% z9 k% ~$ b( ]* C7 X
sb_sub:de
( F4 f9 U3 m$ w! F5 r sc:0123456789
% O0 q" o; T( P9 T& t& k# z1 Z- t sc_sub:34; B6 l7 W8 l: a
sb_copy:abcdefghij
! W0 m9 R( y7 P8 O( ?. w, |
$ t6 f6 S0 `+ i! M二、方法:
7 _5 b9 X( b# F" J% l6 X' o$ i, y# d
说明:①、所有方法均为public。
' W7 v: c+ s8 Q0 J; [% W; b9 c ②、书写格式: [修饰符] <返回类型><方法名([参数列表])>0 r3 ~; o6 q( \ g1 r
4 l) G; b" @& X5 c# O6 p 例如:static int parseInt(String s)' ^8 q* M( r/ c) M$ [& W( J
表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。
. o& Y5 ^% ^ ?& Y7 t6 z5 S
1 `8 x: C4 A/ U2 m1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。# w* S. T2 w9 C5 d, U
, l( I, b. v( W7 h: M
+ R8 C6 T2 j9 M. g- |; k- Z
L1 o i5 B0 i2 }6 ~
例如:String s = new String("abcdefghijklmnopqrstuvwxyz");" d6 O* `0 @: q* e8 x7 T
System.out.println("s.charAt(5): " + s.charAt(5) );7 N" ~) }% u6 d! {* z0 H) C7 z
结果为: s.charAt(5): f
" L0 e) T8 t' V2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
5 k0 n: t+ x+ ^& _( P( q# y3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。
9 {5 }6 x' ]) u8 P* N2 q4 i 例如:String s1 = new String("abcdefghijklmn");
9 D n9 Q5 H# W: i; r5 z String s2 = new String("abcdefghij");; o1 _. F+ q) e+ U. ], a
String s3 = new String("abcdefghijalmn");
" o# S/ H) }6 w% Q% [ System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差
8 ^1 H0 R" Y7 c G- Z# X System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差2 \7 K: ?/ \6 Y7 B8 y
结果为:s1.compareTo(s2): 4" |8 j' `& |- p: @( Z! Z
s1.compareTo(s3): 10
. ~$ c2 a6 k- }, P$ p4. String concat(String str) :将该String对象与str连接在一起。
1 L! k8 I0 t" E9 S5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。
+ D% l& S- k( ]+ k# I" k6. static String copyValueOf(char[] data) :
+ s# M0 n( r5 ~5 e7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。8 J1 N) r0 P/ @( P4 [
8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。5 Q7 p$ [" R3 b& A( I, ~% g
例如:String s1 = new String("abcdefghij");
# A y! B% c! [2 y7 q String s2 = new String("ghij");
4 H. F, C2 p7 V2 {$ u! ]2 N8 R System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );
: A! g1 @6 M @ 结果为:s1.endsWith(s2): true
3 z! L' p; D# k; h g4 m. M9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。
5 n8 ?3 ~$ i3 _, o3 x- E6 _/ q1 d10. byte[] getBytes() :将该String对象转换成byte数组。
4 S) l# O* a' ~2 A, t/ Q9 j11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。0 q# X# w9 G. ~. n1 O; {/ V
例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!6 P* D) b1 r% p
String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!
0 z; }5 c( T: V& F D! J. X System.out.println( s1 );0 p( I9 v5 |+ r: k( Z( t! Y
结果为:I love you!6 c, F8 x+ M, E- P
12. int hashCode() :返回当前字符的哈希表码。% n' v- Z2 ]% P' ?
13. int indexOf(int ch) :只找第一个匹配字符位置。
3 q8 y3 ?* s6 h; {& T. Z14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。
+ \1 K) Z' |8 V: [15. int indexOf(String str) :只找第一个匹配字符串位置。7 p* Z/ e. z- Z& p1 [7 u
16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。
: ?1 ^' R( u8 V 例如:String s = new String("write once, run anywhere!");0 W1 W u- H5 f e! b: p+ @( D. Y
String ss = new String("run");" Z7 g9 k2 w7 Z( ]" M) Y
System.out.println("s.indexOf('r'): " + s.indexOf('r') );
# f/ ~+ ^. X) D9 ^ System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );4 H& S. N/ L [
System.out.println("s.indexOf(ss): " + s.indexOf(ss) );- o1 k7 p9 d! q2 @5 x
结果为:s.indexOf('r'): 1! Q. r+ P! T( n* W
s.indexOf('r',2): 12! ~( n: ]8 F/ D
s.indexOf(ss): 12
0 r3 g" P& y4 I* g4 Z17. int lastIndexOf(int ch)
) o, `& Z! f' X/ @- y. o18. int lastIndexOf(int ch, int fromIndex)3 y4 l _/ j9 l- A0 u
19. int lastIndexOf(String str)
7 o3 j" ~0 c3 Z' u5 h; B20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。
* Q6 G+ l+ b4 y4 T( qpublic class CompareToDemo {
0 [* `7 a) ^7 S public static void main (String[] args) {
( [& J% l5 {! \$ b% ]9 q String s1 = new String("acbdebfg");
6 B) ^% v j) [& V: f
/ _' d" W7 g6 n! D+ I System.out.println(s1.lastIndexOf((int)'b',7));; Z. M$ }5 O- \0 ]6 T. a7 L$ ~5 s
}* L5 W: o+ X$ U$ W8 a( q3 j- w$ J W
}! o* J6 H. v* O
运行结果:5- T0 {0 o. `' s, k7 b0 H. V5 I
(其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)
8 g/ d$ N1 K8 [% f: k% Q/ W/ ]7 p0 Q7 z7 W3 W$ k u
* l# x/ k* S) G, l# `% d5 b
21. int length() :返回当前字符串长度。
/ D0 Q, ?# [5 T0 M& n22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。
8 V3 k. ?; b; |) T; F23. boolean startsWith(String prefix) :该String对象是否以prefix开始。3 N0 {& g. v% _
24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。
. V. P! b) e( k3 `: [ 例如:String s = new String("write once, run anywhere!");- m* u( m( Y- h( k9 J
String ss = new String("write");
T: G( E6 w$ X) B0 e* | String sss = new String("once");
( p- e4 p& [+ O6 ?6 s System.out.println("s.startsWith(ss): " + s.startsWith(ss) );
+ @+ \3 x& f9 V" U9 p' e! B- G System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );( c: I: h8 ^" _3 s
结果为:s.startsWith(ss): true
& b0 _$ s0 e; |% _ s.startsWith(sss,6): true
- k$ W5 ?5 F5 l1 q25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。
7 J; X* [$ p0 T2 d26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。
: w$ r e7 Y7 R0 [27. char[ ] toCharArray() :将该String对象转换成char数组。) a; S9 N# l! x/ h/ j" T4 ^
28. String toLowerCase() :将字符串转换成小写。
1 b1 n7 n3 W) s" F% P, e29. String toUpperCase() :将字符串转换成大写。1 e M+ b7 y& H: ~2 s6 R5 W
例如:String s = new String("java.lang.Class String");1 L: @, {% a7 V `7 V1 R0 [$ ?* ^
System.out.println("s.toUpperCase(): " + s.toUpperCase() );! w. Y7 \* P: B0 G6 H- ?" {
System.out.println("s.toLowerCase(): " + s.toLowerCase() );
2 v! k5 }* ?4 t0 W 结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING
$ c1 O+ t* e$ e H5 U9 ^ s.toLowerCase(): java.lang.class string) c) d7 z% U8 b) \6 O3 y
30. static String valueOf(boolean b)4 G0 V( b+ V2 {6 y% N- o
31. static String valueOf(char c)
& m7 f1 s2 Z6 S4 e: \+ V' {, ^% M7 P32. static String valueOf(char[] data)& }% G7 I$ w' [7 ]1 d, H
33. static String valueOf(char[] data, int offset, int count)# W" [0 }" G3 {
34. static String valueOf(double d)& J) g9 h0 L; c7 ~4 b
35. static String valueOf(float f)3 R: `4 e( B0 d% H0 h8 |
36. static String valueOf(int i)4 t7 q; D! }# y
37. static String valueOf(long l)
5 S5 n. o' z' _38. static String valueOf(Object obj)
0 |$ E( p; q( \: D* x 以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。8 q, r; C' N% t/ ?
/ t9 l4 e7 K0 j; P; ]( c8 Z5 S" g3 s% ], W
2 F' Y$ r% Z2 B$ ^
! m. q4 A. f* ?1 f* M* i5 w% d& W1 h' h1 v' M& C) s+ a
Java中String类的常用方法:, O: F- q3 k7 m: _) i; m* n
% r9 s/ I- i( [public char charAt(int index)
5 g* R+ B' H4 I- P- G3 H M返回字符串中第index个字符;& B7 q3 v/ T& R8 s
public int length()
$ f$ `% U- s. @/ C/ [- e返回字符串的长度;' }3 X r/ V' X0 r7 m" k
public int indexOf(String str)
4 P( g l6 Z" E% e5 t+ @返回字符串中第一次出现str的位置;& @9 V' x7 Y0 N+ C& p3 |, |' @2 |
public int indexOf(String str,int fromIndex)
5 f/ m' Z$ {, w9 S1 x返回字符串从fromIndex开始第一次出现str的位置;
4 ~2 N: {- f9 s, Z8 b Q$ vpublic boolean equalsIgnoreCase(String another)
0 } h1 X. \# L6 a4 C1 l; ^2 O比较字符串与another是否一样(忽略大小写);$ b; A) d" C% i- [
public String replace(char oldchar,char newChar): R1 D5 `3 d& P
在字符串中用newChar字符替换oldChar字符
' n4 \( ^7 u9 K/ Y5 Lpublic boolean startsWith(String prefix)
% a L T6 M4 ^; ^- r; W6 P判断字符串是否以prefix字符串开头;
" Q1 Y. `# S4 |9 c) c- \) mpublic boolean endsWith(String suffix)) x3 U( }# h: j2 g9 T; H
判断一个字符串是否以suffix字符串结尾;4 k, C( n! y% h4 ^. K
public String toUpperCase()
4 G8 d+ s$ u* _ T" b! ]返回一个字符串为该字符串的大写形式;8 F5 Y; ^6 h: M9 a7 F7 P
public String toLowerCase()" {0 m! h% x& p1 k; G
返回一个字符串为该字符串的小写形式* c7 e4 o, Q+ H% @2 m
public String substring(int beginIndex)
2 ?, `7 F1 q7 }, \- C返回该字符串从beginIndex开始到结尾的子字符串;
3 |. u- Y1 r$ J7 h9 ^- f1 U4 G fpublic String substring(int beginIndex,int endIndex)* [+ t5 I( u2 C2 u) `4 c
返回该字符串从beginIndex开始到endsIndex结尾的子字符串8 N3 L& W6 H$ }# M* ~- z
public String trim()
: i! c/ Q7 S( b3 Q( W. M6 y4 `返回该字符串去掉开头和结尾空格后的字符串
, l, @' A: }7 O8 M5 G) w9 t% ]public String[] split(String regex)1 z ?: q# `, i3 {
将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组
0 n6 m& A1 r n实例: 1 t X" I8 B2 J& P% W' w8 X
public class SplitDemo{
: i2 i. m" l% j* D public static void main (String[] args) {
2 R: P) L" G4 l! i
" o' ]9 c$ T" {% b$ Q String date = "2008/09/10";; r& j: \2 ?1 F, |+ |, f& Q
String[ ] dateAfterSplit= new String[3];
6 a/ k4 b! | f% ^- z& r dateAfterSplit=date.split("/"); //以“/”作为分隔符来分割date字符串,并把结果放入3个字符串中。
( u# z" l# A9 w9 d; }
9 O# V! u* f ~4 x( j1 y for(int i=0;i<dateAfterSplit.length;i++)
- j- M$ y. U+ n( l% e System.out.print(dateAfterSplit+" ");
( \3 p$ E# s/ E9 l! } }
$ i A' O% f$ w* U}( a& c2 l T, S' O+ V" n; M3 c1 Q
' W- Q& `( f1 R8 [运行结果:2008 09 10 //结果为分割后的3个字符串0 z; Q9 d1 O0 s( l5 g
; w6 Q) z( ]3 Q. ~. W) `5 @9 W# C实例:, i7 O! n4 D$ t6 T+ ]
TestString1.java:: H0 k# W: ~! ]# P8 P; C
程序代码' ]" G. i" ^( @" @8 z0 [
public class TestString1
! |0 Y9 Q! ^( Z/ V6 D9 `2 I# @{% k$ E4 |8 c) ?5 f. o, a3 d
public static void main(String args[]) {
7 i' T8 C8 e, h0 g) c) J2 f String s1 = "Hello World" ;9 m/ _0 R7 f& O$ j! ?
String s2 = "hello world" ;% Y2 w( h* F! J5 P
System.out.println(s1.charAt(1)) ;
/ B ?* L9 h0 N6 k: N System.out.println(s2.length()) ;
' S9 _2 \7 B; c7 x; i. Y System.out.println(s1.indexOf("World")) ;
4 w7 e8 L5 j( D. j3 m8 @ System.out.println(s2.indexOf("World")) ;4 i6 m& M2 S* \! I
System.out.println(s1.equals(s2)) ;6 E! [9 W; ~$ y6 M
System.out.println(s1.equalsIgnoreCase(s2)) ;
" `5 \5 a1 m+ g. w3 {: {; [/ t& _% [( `# R/ L+ b" M" k
String s = "我是J2EE程序员" ;6 X( a. Y- [4 D4 O( [- d
String sr = s.replace('我','你') ;7 n" C' g8 V# \2 l6 X" f# e+ A
System.out.println(sr) ;( i9 s/ c" B' X; j3 N% c" k
}7 ~* p$ s6 q- b+ Q1 Y: y8 x
}% t+ F0 X3 w i
7 G2 S7 F3 R# ^0 {3 {TestString2.java:
: v7 k z9 L- M3 H$ f程序代码+ `+ m C' K5 h. T0 `* p8 f
1 X3 U7 Z. L- }public class TestString29 C& p# p% r6 R1 ^# x0 f% C7 L
{6 Y) h( ]& j9 ]7 m: j6 e
public static void main(String args[]) {
! W+ r. J. V: M) }! {/ }: P( k String s = "Welcome to Java World!" ;
8 z+ [; u2 a' K Y/ ~" ` String s2 = " magci " ;
( P* \" n: a3 _3 F System.out.println(s.startsWith("Welcome")) ;
' c7 G) i h3 |0 ]- r' j System.out.println(s.endsWith("World")) ;
* B' K! R, y/ B String sL = s.toLowerCase() ;' D; ^( \+ b8 Q* k
String sU = s.toUpperCase() ;% W$ p# I1 ?+ l. `
System.out.println(sL) ;/ n& C6 W9 A$ t( `
System.out.println(sU) ;
( [0 s% Y i: l1 F String subS = s.substring(11) ;1 a4 ?4 H6 `3 @8 @8 q4 i
System.out.println(subS) ;# v; U1 o3 W p. N
String s1NoSp = s2.trim() ;
6 x$ o7 _+ @+ O; ?9 l7 w8 j& G7 b System.out.println(s1NoSp) ;
/ p$ u6 ^7 @* O1 `! U0 Q0 B. S- i }
: J5 H& ?2 V. [
/ ~! R. l9 f% D" v |
|