a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 326|回复: 1

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

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

使用道具 举报

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

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

① 将其它类型对象转化为String对象用toSstring( )
$ z4 x3 m/ q6 J* E! n  int x=9;
6 Z3 K: \5 j( G, b' x4 V  System out println (new Integer( x). to String( )); " T" S' h: ~- W: H2 l. c+ o6 m
即采用: , ]- Q: V+ E" L8 M, K1 d
对象名.to String( )来转换 2 e3 t% Y  |) a# M0 E- p
或:
$ s  {* {/ i+ t% l" F调用String类的valueof( ) 函数将不同类型的数值型变量转化为String对象
/ @7 S* X2 [# {2 l# V6 D% [System.out.println(String.Valueof(Math.PI) );        //常量3.1415926 % l1 p; D' i8 r3 `; W) F
  
2 D$ h# N+ [% z$ s# D0 `② 将String类的对象转换为数值对象:
* K" P; O+ N8 M可采用数值型类(Float、Integer、Double、Long)中的Valueof()来实现。 6 v) E: J) a& x0 Y7 I3 S
直接将字符串转化为对应的值
, c8 @, c) Y4 C( YString Str="3.1415926"; : H5 l3 V/ I' ?
String DataValue="12345";
/ o( e* X2 U6 ]' bDouble piObj=Double.Valueof(Str);
/ a# P" J% t: M1 edouble piValue=Double.parseDouble(piObj); " |7 T8 d: J; v; F9 c% d9 w
Integer intDataObj=Integer.valueof(DataValue);
4 k- b6 j9 ]) V! m4 k  ~int intDataValue=Integer.parseInt(intDataObj); # Q5 X8 L9 e+ Q0 e  z6 X6 @% g
或:int intDataValue=intDataObj.intValue(); 0 _3 P% p6 z# W! V0 d( k
  ( _; O7 _& B" H. j4 L
5、合并两个String对象:直接采用“+”来实现。               
, `, W, i% @* C8 _String str="How";     
4 E9 h- L9 B# n7 X1 ?System.out.println(str+" Are"+" You !"); , o' P: w% @. k( x
  
# w1 d( j; t; [, w# W2 B: Z+ D6、StringTokenizer类:它把一个字符串分成一系列叫做标记(token)的更短的字符串,可以通过使用某种字符或多个字符作为分界符来划分。
& y3 ~" j4 u  k- `' mimport java.util.StringTokenizer;
& W8 n) U  C' k6 o& P8 S& sclass ShowTokens  + p0 f: r6 `  ?4 |" M0 k
{   public static void main(String[] arguments)  ! g6 U: O9 N, |9 c5 h( S, w: Y
{   StringTokenizer st1, st2; : ]4 M4 s% W6 F0 [- ~  C
        String quote1 = "VIZY 3 -1/16"; ( V0 Y% P" E: i0 G( C2 t; b
        st1 = new StringTokenizer(quote1);  //缺省时为“空格”作为分隔符
$ s- s" A* |% Y  S        System.out.println("Token 1: " + st1.nextToken());
8 L0 ^+ d. S0 c5 I2 ]        System.out.println("Token 2: " + st1.nextToken());
! S7 |. p1 D: z. J        System.out.println("Token 3: " + st1.nextToken());
3 B6 D6 F, M. N, _) d$ o6 E# y  - c7 ?: P0 P9 |" Y
        String quote2 = "NPLI@9 27/32@3/32"; ; b7 ]7 l+ v' \$ E4 B
        st2 = new StringTokenizer(quote2, "@");//指定“@”为分隔符 . d- a6 i. {6 P% m. O
        System.out.println("\nToken 1: " + st2.nextToken());
! O- L% P( l- J" S* {  g        System.out.println("Token 2: " + st2.nextToken()); 4 L0 \8 E! z# C; B" t8 \
        System.out.println("Token 3: " + st2.nextToken()); ; o0 \3 w7 X: ~3 I" f+ H4 {6 d
    } ( |& Q. a! p3 [2 N8 K- i' [' Y% ^0 P
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 13:48 , Processed in 0.237147 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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