Java中的字符串处理
3 b' Z% G. L6 \' R0 Q9 J5 ?: Y$ x1、C/C++及Java中字符串的异同: 0 l1 z- v. e8 @. [' o6 g& \ O4 n. p
① 在C/C++中,用“ ” 包围的称为字符串,并且以‘\0’作为结束标志; 7 h+ g3 f% p$ C8 w
在Java中也仍用“ ” 包围一个字符序列,但无‘\0’作为结束标志。
9 }- l4 w% y3 c% o. X; u# Y② 在C/C++中将字符串作为字符型数组处理,并且不支持越界操作; * ]9 m9 W& z; {; E
而在Java中将它看成对象并提供一系列操作方法来处理字符串,并提供数组越界支持,一旦数组越界系统将产生异常。 0 M7 E0 ^) M* N) F0 B4 Q4 X
% S: R- j+ @& t9 E& J1 t
9 x7 K9 g1 l; C6 P4 N2、 Java String类: * S9 j; U- V& }- _2 j, ]8 I7 {
在Java.lang包中定义出,适用于处理常量字符串(其长度和内容一般不再更改)。
" Y4 Z7 f! F* R7 R* n① 创建String类对象
4 r- V3 j; ]' \( P方法1:利用文字串直接初始化一个string对象 & P. C5 a1 j0 Z! J% r' l
String s="Hello,world!"; * q( S* S: E/ n
方法2:利用String类的构造函数来实例化一个String类的对象
) ]3 P7 ?+ ~- i: w Strng (char chars[ ]); 5 f) t7 a) ]+ Z) E, U% Q
先定义:
) g9 a N0 v! a: schar chars[ ]={’a’,’b’,’c’,’d’}; 8 F5 T0 a$ s d! [9 m. E/ M5 j
再实例化:
+ L {* Y. p c* A5 [String Str=new String (chars); 5 y$ T- @" X& n' z# {
② String类中常用的成员函数:l
4 `9 Y: @7 @) f+ ul ength( ) :获取字符串长度; 4 C9 Y' S, k5 P
l CharAt ( ):获取指定索引位置处的字符或子字符串; 0 U2 h2 i1 V, ]* S- h* {
l indexof( ):获取某一个指定字符在字符串中的索引位置。 - g: ^7 g; w( g
0 H4 R$ E5 f7 r x3、Java 中的可变字符串StringBuffer类
8 U3 H1 t5 o' A! U; W: ?① 作用: 7 ?. S" |; K; p& ^) m% H8 ^8 L% G
它常用来处理可变字符串(长度及内容均可以被改变)。 9 y: H* d& K2 Y3 y9 a
② StringBuffer类中的常用成员函数: % \8 K9 Z1 \4 ^- e
l length( )
g0 c. E* g2 I; Y# u' s! G; F+ Sl chartAt( ) 同String类中对应成员函数相同; ) T* J3 B# ~+ o0 b1 C) L# ]2 s7 q
l capacity( )它返回StringBuffer对象的容量(初始创建该对象时的字节数目的),而length( )则返回当前已占用的实际字节数目; 7 I& t0 T2 `5 q4 N- V- B) a
l setcharAt( )用来设置指定索引位置的字符值(修改字符);
2 J. G) v1 p6 x0 I, ?% l( I |l append( )用来在字符串的末尾添加字符; 6 o, n. c3 W2 Q5 N) W6 k: `' {
l insert( )在字符串中的某个索引位置处插入字符。
7 ?0 T4 W6 Q$ p: @4 Z7 \ 6 Y: h) F1 G1 V. f
③ 构造函数:
4 e9 Y! G8 U4 F# E4 q5 j# }StringBuffer( ); 3 R( k. w. e( K9 g4 v4 |
StringBuffer(int length);
, M }! y& [. ^2 `5 cStringBuffer(String str) # h; W' E* B; { a4 S1 e3 H
程序例: 7 Q$ |6 H4 e" @
public class StringDemo
' [, s3 R: b8 x" \4 g; m1 d{ 9 q# O0 y2 |6 Q8 [: i) n3 k: ]
public static void main(String[] args)
6 i( ~2 G. ~/ R, j: M3 s { //所实现的功能是从该字符串中进行拷贝直到遇到“g” / X. B* ~' h( q& u9 F. F/ _" g
String copyFromMe = "Copy this string until you encounter the letter ’g’."; 8 `, w' }$ a4 o
StringBuffer copyToMe = new StringBuffer();
0 f$ `6 K& E; H6 f0 z1 V int i = 0;
) @- a5 k6 ^! {4 z! @/ Q* [, ~ char c = copyFromMe.charAt(i);
( m0 K* n3 `# ?2 D5 v0 O" T' k while (c != ’g’)
T2 M9 V' Q/ N; E5 z8 m) N {
" m6 ?3 f( b7 L copyToMe.append(c); , O2 k7 j( R7 H9 m( M# @" M( Y
c = copyFromMe.charAt(++i); : \' g! @* K. T$ |( a5 k7 i
} 2 l, [. B8 z' K) |) K% I+ {
System.out.println(copyToMe);
) M7 ]+ C- T* w' z: r) [3 e } * ~' F. l" L" D9 B K' X, d; |
} 8 A0 d7 B& L: j4 `
4、Strintg类对象与其它类型的对象之间相互转换 |