Java String字符串处理和字符处理


字符串类Sring


  字符串时由字符构成的一个序列,在JAVA中,字符串是一个对象

1、字符串的构造
1)从字符串直接量创建一个字符串
  String 字符串名 = new String(字符串直接量)
 如:String str = new String(”welcome to java“);
2)将字符串直接量看成String对象
  String str = ”welcome to java“
3)用字符数组创建一个字符串
  char[]  chars = {'G','O','O','D' };
  String str = new String (chars);

2、不可变字符串 和 限定字符串
1)String对象是不可变的,一旦创建,他的内容是不能改变;
  如:String  s = “java”; s = "html";
 不能改变原来s创建的字符串对象,只是将变量s引向了新对象“html”,原对象无法再继续访问;
2)限定字符串:jvm为提高效率并节约内存,会对具有相同字符串序列的字符串直接量使用同一个实例;

3、字符串的比较
java.lang.String   
+equals (s1:String): boolean
+equalsIgnoreCase (s1:String ): boolean

+compareTo (s1:String): int 

+compareToIgnoreCase (s1:String): int 

+regionMatches (index: int ,s1:String,  s1Index:int , len:int ) :boolean
+regionMatchesIgnoreCase (index: int , s1:String,  s1Index:int , len:int ) :boolean

+startWith (prefix:String) : boolean
+endWtih (prefix:Sring) :boolean

○如果这个字符串等于字符串s1,则返true;
○ 同上,不过忽略大小写;

○ 返回一个大于0,等于0、小于0的整数,表明这个字符是大于、等于、或小于s1;
○ 同上,不过忽略大小写

○ 如果这个字符串指定的子域精确匹配字符串s1中指定的子域,则返回true;
○ 同上,不过忽略大小写;


○如果这个字符串以指定前缀开始,返回true;
○如果这个字符串以指定后缀开始,返回true;
  1)用法,如s1和s2比较
  String s1 = ....;   String s2 = .....;
  boolean a = s1.equals(s2);
  2)运算符==只能检测2个操作数是否指向同一个对象;

4、字符串长度、获取字符,组合字符串;
java.lang.String   
+length ( ):int 
+charAt (index:int ):char
+conat (s1:String) :String 
○返回这个字符串的字符个数
○返回这个字符串的指定下标处的字符;
○返回连接这个字符串和s1 所构成的新字符串;
   1) String s3 = s2.conat(s1)  等价于 String s3 = s2+s1

5、获取字串
java.lang.String   
+substring (beginIndex: int) : Sring 
+substring (beginIndex: int, endIndex: int) : String 
○返回这个字符串中以指定beginIndex开始,
并延续到结尾(或endIndex)的字串;
6、 字符串的转、替换和分隔
java.lang.String   
+toLowerCase( ) :String
+toUpperCase( ) :String 

+trim ( ) :String
+split ( delimiter :String):String[ ]

+replace (oldChar:char,
   newChar:char) :String

+replaceFirst   (oldString:String,
   newString:String) :String
+replaceAll  (oldString:String,
   newString:String) :String 

○返回键所有字符转化为小写的新字符串;
○返回键所有字符转化为大写的新字符串;

○返回去掉两端空白字符之后的新字符串;
○返回用定界符分隔的字串 所构成的一个字符串数组

○用一个新字符代替该字符串所有匹配的旧字符串;


○用一个新字串替换第一个匹配的字串;

○用一个新字串替换所有匹配的字串;
1)正则表达式:通过某个模式来匹配、替换或分隔一个字符串;
2)matches类可以匹配一套遵循从某种模式的字符串
“java is fun”.matches ( "java.*") // 结果为true;其中java.*是一个正则表达式;
3)split、repalceAll、replaceFirst 可以和正则表达式结合使用
   String s = "a+b$#c".repalce("[$+#]","NNN") 
   //结果为 s=“aNNNbNNNNNNc”,其中[$+#]也是一个正则表达式;

7、找出字符串中的某个字符或字串
java.lang.String   
+indexOf (ch: char): int
+indexOf (ch: char , formIndex :int):int

+indexOf (s:String) :int 
+indexOf (s:STring, formIndex:int):int

+lastIndex (ch:char):int 
+lastIndex (ch:char , formIndex: int ):int

+lastIndex (s:String):int 
+lastIndex (s:String , formIndex: int ):int
○返回第1次出现ch的下标,如果不匹配返回-1
○返回字符串formIndex之后第1次出现ch的下标;

○返回第1次出现s的下标,如果不匹配返回-1;


○返回最后1次出现ch的下标,如果不匹配返回-1;
○返回字符串自formIndex最后1次出现ch的下标;

○返回最后1次出现s的下标,如果不匹配返回-1;

8、字符串和数组之间的转换
1)字符串 → 字符数组
 ①toCharArray方法
 如:char[] chars = "java".toCharArray(); // 获取 chars[] = {'j','a','v','a'};
 ②getChars (int srcBegin,int scrEnd ,char[] dst, int dstBegin) 
  将下标从scrBesign到scrEnd-1的字串复制 到字符数组dst中 下标从dstBegin开始的地方;
 如:
char[] dst = {'j','a','v','a'};
"CS2340".getChars(1,4,dst[],1)  // dst[] = {'j','a', 'S','2','3','4', 'v','a'};
2)字符数组 → 字符串
构造方法String(char[ ])方法valueOf(char[ ])
如:String str = new String ( char[ ] {'j','a','v','a'} );
  或  String str = String.valueOf ( char[ ] {'j','a','v','a'} );

9、将字符和数值转换为字符串
java.lang.String   
+valueOf (c:char):String
+valueOf (data:char[ ]):String
+valueOf (d:double):String
+valueOf (f:float):String
+valueOf (i:int):String
+valueOf (b:boolean):String

○返回包含字符c的字符串;
○返回包含数组中字符的字符串;
○返回表示double值的字符串;
将字符串转化为数值
Double.parseDouble (str)Integer.parseInt (str)

10、格式化字符串
String类中的format方法
String.format(format,item1,item2.....itemk)
如:
String 2 = String.format("%5.2f",45.776);






字符类Character

Character类中大多数方法都是静态方法;
使用时,应先构建对象;Character char = new Character();
java.lang.Character  
+Character (value :char)
+charValue () : char

○使用char值构建一个字符对象
○从这个对象返回char值
+compareTo (anotherCharacter : Char) :int 
+equals(anotherCharacter : Char): boolean

○将这个字符与其他字符比较
○如果这个字符等于另一个字符返回true;
+isDigit (ch : char ) : boolean
+isLetter(ch:char) : boolean
+isLetterOrDigit(ch:char) : boolean 
+isLowerCase(ch:char) : boolean 
+isUpperCase(ch:char) : boolean 

○如果指定字符是一个数字,返回true;
○如果指定字符是一个字符,返回true;
○如果指定字符是一个数字或字母
○如果指定字符是一个小写字母
○如果指定字符是一个大写字母
+toLowerCase(ch:char) : char
+toUpperCase(ch: char) : char
○返回指定字母的小写
○返回指定字母的大写


9.3  StringBuilder / StringBuffer 类
 1、String类一旦确立,它的值就确定了,但是可以给一个StringBuilder或StringBuffer类添加、插入、追加新的内容;
     1) 如果是多任务并发访问,使用StringBuffer类;
     2)如果是单任务访问,使用StringBuilder类;
java.lang.StringBuilder  
+StringBuilder
+StringBuilder (capacity : int)
+StringBuilder (s:String)
○构建一个容量为16的字符生成器;
○构建一个指定容量的字符生成器;
○构建一个带指定字符串的字符生成器;

2、修改StringBuilder中的字符 
java.lang.StringBuilder  
+append (data : char[]) :StringBuilder
+append (data:char[] ,
    offset: int , len: int ):StringBuilder
+append ( v: aPrimitiveType) :StringBuilder
+append ( s: String) : StringBuilder

+delete(stractIndex: int ,endIndex:int):
    StringBuilder
+deleteCharAt (index :int) : Stringbuilder

+insert (index: int, data: char[] ,
     offset: int , len: int):Stringbuilder
+insert (offset: int , data: char[]):
    Stringbuilder 
+insert (offset: int , v: aPrimitiveType)
    :Stringbuilder 
+insert (offset: int ,s:String) :Stringbuilder 

+replace (startIndex: int ,
    endIndex: int , s: String):Stringbuilder 
+reverse () :StringBuilder
+setCharAt (index: int, ch :char) : void

追加一个char型数组
○追加data中的子数组

○追加一个基本型值
○追加一个字符串

删除stractIndex到endIndex-1的字符;

删除指定下标的字符;

○在指定下标处,插入数组中数据子数组

○在指定下标处,插入数组

○在指定下标处,插入转换成字符串的

○在指定下标处,插入字符串

○使用特定字符,替换字符生成器中stractIndex
到endIndex - 1 的字符;
颠倒生成器中的字符
○在生成器特定下标设置一个新字符

3、StringBuffer中处理字符生成器的方法
java.lang.StringBuilder  
+toString () : String
+capacity : int
+charAt (index: int) :char

+length () :int
+setLength (newlength :int) : void
+subString (stractIndex: int): String
+subString (stractIndex: int, endIndex:int): String

+trimToSize () :void
○重字符生成器返回以字符串对象;
○返回这个字符串生成器的容量;
○返回指定下标处的字符;

○返回这个生成器中字符的个数;
○在这个生成器中设置新的长度;
○返回从stractIndex开始的字符串;
○返回stract到end-1 的字符串;

○减少字符串生成所用的储存大小;
注:1)字符串长度总是小于或等于生成器容量;
       2)如果容量过大,会造成内存浪费,可以使用trimToSize方法将容量降到实际大小;


9.4  命令行参数
1、运行程序时,可以从命令行给main方法传递字符串参数
如: java TestMain arg0 arg1 arg2  // 该命令行用三个字符串arg0 、arg1、arg2启动程序TestMain;
2、如果字符串参数包含空格,就必须用“ ”括住该字符串
3、当调用main方法时,java解释器会创建一个数组储存命令行参数,然后将数组传递给args,如:args = new arg[n];
4、在命令行中,要用“*”代替*,因为*代表当前目录下所有的文件;


你可能感兴趣的:(Java,Java,I/O,系统)