java字符串处理

String对象
一、Java中将字符串作为String类型对象来处理。当创建一个String对象时,被创建的字符串是不能被改变的。每次需要改变字符串时都要创建一个新的String对象来保存新的内容。原始的字符串不变。之所以采用这种方法是因为实现固定的,不可变的字符串比实现可变的字符串更高效。对于那些想得到改变的字符串的情况,有一个叫做StringBuffer的String类的友类,它的对象包含了在创建之后可以改变的字符串。
String类和StringBuffer类都在java.lang中定义。因此它们可以自动的被所有程序使用。两者均被说明为final,这意味着两者均不含子类。
二、String构造函数
(1)String(), 默认构造函数,无参数
String s1 = new String();
(2)String( char chars[]) ,传入字符数组
char[] myChars={‘a’, ‘b’, ‘c’};
String s2 = new String(myChars) // 使用字符串“abc”初始化s2
(3)String( char chars[], int startIndex, int numChars) ,传入一个字符数组,从指定下标位置开始获取指定个数的字符,用这些字符来初始化字符串变量。
char[] myChars={‘h’, ‘e’, ‘l’, ‘l’, ‘o’};
String s3 = new String(myChars,1,3); //使用字符串“ell”初始化s3
(4)String(String strObj),传入另一个字符串对象,用该字符串对象的内容初始化
String s4= new String(s3); // 这是s4也是“ell”了。
(5)String(byte asciiChars[])
String(byte asciiChars[], int startIndex, int numChars)
尽管Java的char类型使用16位(bit)表示Unicode编码字符集,在Internet中,
字符串的典型格式使用由ASCII字符集构成的8位数组,因为8位ASCII字符串是共同的,当给定一个字节(byte)数组时,String类提供了上面两个初始化字符串的构造函数。
例子:
package Examples;
class SubStringConv{
public static void main(String[] args){
byte ascii[]={65,66,67,68,69,70};
String s1=new String(ascii);
System.out.println(s1);
String s2=new String(ascii,2,3);
System.out.println(s2);
}
}
编译和运行后输出:
ABCDEF
CDE
三、(1)调用字符串的length()方法可以得到该字符串的长度(字符个数);
(2)前面说明了如何使用new运算符创建一个字符串实例。然而这是一种早期的使用字符串常量的处理方法。对于程序中的每一个字符串常量,Java会自动创建String对象。因此,可以使用字符串常量初始化String对象。例如:
String s5=”abc”;
int i = “abc”.length(); //可以将字符串作为对象来进行操作
(3)可以使用“+”运算符来将两个字符串连接起来产生一个新的String对象。只要+运算符有一个运算数是字符串(String)实例时,编译器就将另一个运算数转换为它的字符串形式。这种操作是通过调用一个由String类定义的 字符串转换方法valueOf()来完成的。对于简单类型,valueOf()方法返回一个字符串,该字符串包含了该类型的值的字符串。对于对象,valueOf()方法调用toString()方法。每一个类都执行toString()方法,因为它是由Object定义的。toString()方法具有如下一般形式: String toString() 。 toString()方法返回一个String对象(即字符串)。该对象一般是对类的一个描述。

第二节、StringBuffer
StringBuffer定义了下面三个构造函数:
StringBuffer() // 默认构造函数,预留了16个字符的空间,该空间不需再分配
StringBuffer(int size) // 设置指定缓冲区大小
StringBuffer(String str) // 设置StringBuffer对象初始化的内容并预留16个字符空间,且不需再分配空间
* int length()
调用length()方法可以得到StringBuffer对象的长度,调用capacity()可以得到总的分配容量。两个方法都是返回一个int类型的值。
* void ensureCapacity(int capacity)
如果想在构造StringBuffer对象后为某些字符预分配空间,可以使用ensureCapacity()方法,设置缓冲区的大小,这在事先已知要在StringBuffer上追加大量小字符串的情况下是有用的。ensureCapcity()方法具有如下的一般形式: void ensureCapacity(int capacity)
* void setLength(int len)
使用setLength()方法可以设置StringBuffer对象的长度,它的一般形式如下:
void setLength(int len) 如果len大于StringBuffer对象当前的length()值的话,那么会在StringBuffer对象后面加上空字符;如果比length()小的话,则len后面的字符串会丢失。
* char charAt(int where)
void setCharAt(int where, char ch)
使用charAt()方法可以得到StringBuffer对象中指定位置上的字符,setCharAt() 可以设置指定位置上的字符。它们的一般形式如下:
char charAt(int where)
void setCharAt(int where,char ch)
对于这两种法法,where值必须是非负的,同时不能超过或等于StringBuffer对象的长度。
* getChars(int suorceStart,int sourceEnd,char target[] , int targetStart)
* append()
Append()方法将任一其他类型数据的字符串形式连接到调用StringBuffer对象的后面,对所有内置的类型和Object,它都有重载形式。下面是几种形式:
StringBuffer append(String str)
StringBuffer append(int num)
StringBuffer append(Object obj)

  • insert()
    Insert()方法将一个字符串插入另一个字符串中。下面是它的几种形式:
    StringBuffer insert(int index,String str)
    StringBuffer insert(int index,char ch)
    StringBuffer insert(int index,Object obj)

    *reverse() // StringBuffer reverse()
    StringBuffer strbf=new StringBuffer(“ABCDEFG”);
    strbf.reverse();
    System.out.println(strbf); //输出 GFEDCBA

    • StringBuffer delete(int startIndex,int endIndex)
      StringBuffer deleteCharAt(int loc)
      删除指定位置的字符串和指定位置的字符。例如删除第一个字符后的所有字符:
      strbf.delete(1,strbf.length());

      • replace()
        它完成在StringBuffer内部用一个字符串代替另一个指定起始位置和结束位置的字符串的功能,注意的是,被代替的字符不包括结束位置上的字符,它的一般形式是,:
        StringBuffer replace(int startIndex, int endIndex,String str)

      • substring() 返回StringBuffer的一部分值
        String substring(int startIndex)
        String substring(int startIndex, int endIndex)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值