a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 323|回复: 1

[专业语言] JAVA语言基础之Java中的字符串处理

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
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类对象与其它类型的对象之间相互转换
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:44:45 | 显示全部楼层

JAVA语言基础之Java中的字符串处理

① 将其它类型对象转化为String对象用toSstring( ) ( j; b1 i+ S; j' I4 l
  int x=9; 0 T7 m- c! x# i, G4 F
  System out println (new Integer( x). to String( )); 4 X& E. J7 e, v: V  k
即采用:
# L: w  s0 f. A对象名.to String( )来转换 ; G+ c& [; w/ b  x; b$ K9 a
或: ( c) t9 a$ {3 {. ?  @
调用String类的valueof( ) 函数将不同类型的数值型变量转化为String对象 1 ^9 f' ~6 D* M( ^
System.out.println(String.Valueof(Math.PI) );        //常量3.1415926 ) e7 z  l- E( U
  ' o$ v2 ?# J3 p! C4 a9 s" _
② 将String类的对象转换为数值对象:
8 Y8 `) X* I2 z$ o- U可采用数值型类(Float、Integer、Double、Long)中的Valueof()来实现。 8 y( c+ F3 A. J# I* ^, _& a) B9 c; P
直接将字符串转化为对应的值 1 S1 T% A) o9 l8 v5 U
String Str="3.1415926"; ! u) e; ^4 G9 ~1 e. R! U& {
String DataValue="12345";
. A5 t  [8 X  q' `2 SDouble piObj=Double.Valueof(Str);
* {1 a; }8 W- ^# ydouble piValue=Double.parseDouble(piObj);
( J4 r7 m7 {/ M  P9 E+ s9 ?Integer intDataObj=Integer.valueof(DataValue); 7 L) h! d$ t1 f
int intDataValue=Integer.parseInt(intDataObj); 6 l/ j% y: U! x: R6 v) A% ]3 C  ~9 @
或:int intDataValue=intDataObj.intValue(); ( u! }" u5 A, p9 M
  
2 t& Z& N7 N0 l7 H0 U5、合并两个String对象:直接采用“+”来实现。               6 w5 F; o9 @: w
String str="How";     4 S# ?8 ~" z2 u) `: F4 Y
System.out.println(str+" Are"+" You !"); ! n  L& Q% U( }9 o# r% ?! |
  
7 Q5 R/ b9 G) X6、StringTokenizer类:它把一个字符串分成一系列叫做标记(token)的更短的字符串,可以通过使用某种字符或多个字符作为分界符来划分。
, }, {! T7 }: l! P0 P* q* Zimport java.util.StringTokenizer; ! x3 }" W2 _* A: C5 z& T6 n
class ShowTokens  ) L5 L( A6 G: G& e9 i" J1 w" u
{   public static void main(String[] arguments)  7 r, s! W# p! l
{   StringTokenizer st1, st2;
' _$ {6 S/ B8 B        String quote1 = "VIZY 3 -1/16"; 2 t" d' w) R% N! T- Q4 w
        st1 = new StringTokenizer(quote1);  //缺省时为“空格”作为分隔符
8 B7 _( D" ]) a+ T        System.out.println("Token 1: " + st1.nextToken());
2 t8 `6 @! q& l9 t" s        System.out.println("Token 2: " + st1.nextToken());
- o; t: [; s8 \: D0 F        System.out.println("Token 3: " + st1.nextToken()); : s0 P/ E7 G7 i. e7 h* y3 T  `
  
8 N, f) S* \4 s0 [9 x& h* I# @        String quote2 = "NPLI@9 27/32@3/32";
' Y& w  a& k6 z- B        st2 = new StringTokenizer(quote2, "@");//指定“@”为分隔符 , e" e) O2 @/ C3 S$ P. j
        System.out.println("\nToken 1: " + st2.nextToken());
) G& |1 g& ]2 e/ ~8 m; ^4 P: ^# a. ~; W        System.out.println("Token 2: " + st2.nextToken()); 2 J6 T" s2 h, l! t) `/ u& `
        System.out.println("Token 3: " + st2.nextToken());
: N1 h# j- M0 q* j    }
3 P6 e- I) N, f- ~+ y& Q1 q% Z, w}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-3-28 18:39 , Processed in 0.189180 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表