Java中的字符串处理 . U% N5 {/ V' D( k# K
1、C/C++及Java中字符串的异同:
% z$ X- g$ u) _) V& l( B0 A① 在C/C++中,用“ ” 包围的称为字符串,并且以‘\0’作为结束标志; S' n) G) o) a2 N% U. ?9 @* g0 s! H
在Java中也仍用“ ” 包围一个字符序列,但无‘\0’作为结束标志。
. R" i9 h& u( s3 K7 R; _$ q② 在C/C++中将字符串作为字符型数组处理,并且不支持越界操作;
- n& O; p; f! H' F- U+ f G* H而在Java中将它看成对象并提供一系列操作方法来处理字符串,并提供数组越界支持,一旦数组越界系统将产生异常。
5 a6 P' E6 P! h w$ Q9 X- O3 A) Q& h' V
, d( p; G1 O- h6 A0 Y
2、 Java String类:
: h5 R: C# p r# H" a在Java.lang包中定义出,适用于处理常量字符串(其长度和内容一般不再更改)。
+ S9 r$ H4 P/ G9 k9 f$ w$ @& X① 创建String类对象 ; Q* Q9 o( s- [( Z B
方法1:利用文字串直接初始化一个string对象
' R0 ^: R5 }( ?# q& P5 \$ u7 u String s="Hello,world!"; & I1 ~. Q$ I, {* F, a* a) e: c( D; |7 b
方法2:利用String类的构造函数来实例化一个String类的对象
" i% s X" C* {0 S Strng (char chars[ ]);
$ t. ~- V% P: S b先定义:
7 X& H2 r4 u0 p( w9 {char chars[ ]={’a’,’b’,’c’,’d’};
( n/ {9 h, y+ F6 `9 f3 j再实例化: ' j1 \, e6 o6 V5 E4 T
String Str=new String (chars);
) B0 p( b2 c! D! B- w" R, ]* J② String类中常用的成员函数:l
' ` o! e5 v6 G5 j: I6 Z# q3 Xl ength( ) :获取字符串长度;
; ^* _% V% g0 H$ H7 M4 z/ Ql CharAt ( ):获取指定索引位置处的字符或子字符串;
! h* P& [; a7 O8 m' al indexof( ):获取某一个指定字符在字符串中的索引位置。 ) ^1 y# s1 d+ f2 [$ I9 Q& m2 |( G4 ~2 V
3 t0 P. V2 P, f& x' A% ~- J
3、Java 中的可变字符串StringBuffer类
* Y9 A& J$ \ l; ^7 j) r① 作用:
' Q* J6 l% R6 J它常用来处理可变字符串(长度及内容均可以被改变)。 + J2 Z" r9 D5 A: u! B' L _8 f
② StringBuffer类中的常用成员函数:
/ N7 l) s, k* i1 ~. p7 z: Al length( ) z" s) _) H3 _- l; |2 F3 e8 A7 q
l chartAt( ) 同String类中对应成员函数相同; " n! m/ p, w9 V u: C6 I
l capacity( )它返回StringBuffer对象的容量(初始创建该对象时的字节数目的),而length( )则返回当前已占用的实际字节数目; . l' u" v" R5 ~. u( w
l setcharAt( )用来设置指定索引位置的字符值(修改字符);
8 H! o- c9 l0 k" T2 \0 kl append( )用来在字符串的末尾添加字符; 3 f. W* @3 W+ Z8 Y. _+ X/ w# B
l insert( )在字符串中的某个索引位置处插入字符。
5 G+ g- w/ w: d6 a- m % E/ M H& b5 Q' W
③ 构造函数:
- V& n! V4 H$ X6 {3 u# J3 sStringBuffer( );
+ V" b; q4 k5 n C2 S2 j3 l; wStringBuffer(int length);
" |8 w9 ]4 I# y: c' K- mStringBuffer(String str) p1 | C$ Z9 [0 M2 W) M
程序例:
! v. _3 r5 K+ P! E public class StringDemo 9 J1 y( h. _$ Z0 q
{ 5 N) n4 ^: E8 `8 P9 L4 e
public static void main(String[] args)
: R. S5 m4 Q# S+ N; ?; W1 k { //所实现的功能是从该字符串中进行拷贝直到遇到“g” ; _- D4 B; E# l' ^% C5 ]5 D% b6 f
String copyFromMe = "Copy this string until you encounter the letter ’g’."; & u' g* U [- X$ ], ?2 X, ^
StringBuffer copyToMe = new StringBuffer();
, R5 Z& [& [% q' N3 k int i = 0;
* \1 d7 q% ]& I) @9 ~/ u char c = copyFromMe.charAt(i); 1 T% E! h! O% A' l
while (c != ’g’) 1 @& b+ G- O- T) F% y' {( ]0 f
{ / `$ V8 M3 O& I
copyToMe.append(c); " {$ }/ L L5 d! O
c = copyFromMe.charAt(++i);
* I8 y k- h; E2 e; o } 7 i' a% b5 Z2 I* x
System.out.println(copyToMe);
2 D# Y5 q6 q, z# O/ H; O! h6 p } " \0 u8 I q5 }' x
}
1 X: y/ Q; ]- b7 e) e4、Strintg类对象与其它类型的对象之间相互转换 |