Java学习:Java字符串处理,
分享于 点击 18215 次 点评:284
Java学习: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对象(即字符串)。该对象一般是对类的一个描述。 四、一些字符串操作 (1)字符截取 *char charAt(int where) ,注意,这里返回一个char字符例如: char a ; a="abcde".charAt(2); //将索引为2 ,即第三个字符赋给a * void getChars(int sourceStart, int sourceEnd, char target[], int targetStart) ,这里是无返回值方法,指定要截取的子字符串的开始和结束下标,再指定要储存子字符串内字符的数组,和存放这些字符的起始位置。注意,子字符串并不包括位于结束下标的字符。 * byte[] getBytes() 这是getBytes()方法最简单的形式,它实现将字符存放于字节数组中。在将字符串(String)值输出到一个不支持16位Unicode编码的环境时,getBytes ()是最有用的。例如,大多数Internet协议和文本文件格式在文本交换时使用8位ASCII编码。 * char[] toCharArray() 将字符串中所有的字符转换到一个字符数组的最简当方法,也可以使用getChars()方法实现。 (2)字符串比较 * boolean equals(Object str) 比较两个字符串对象是否相等, boolean equalsIgnoreCaseJ(String str) 比较两个字符串对象,且忽略字符的大小写 * regionMatches() 方法允许将一个字符串中指定的区间和另一字符串中指定的区间进行比较,它的重载形式允许在比较时忽略大小写。下面给出这两种方法的一般形式: boolean regionMatches(int startIndex,String str2,int str2StartIndex,int numChars) boolean regionMatches(boolean ignoreCase ,int startIndex,String str2,int str2StartIndex,int numChars) 其中startIndex指定调用此方法的字符串内子字符串的起始位置。 * boolean startsWith(String str) startsWith方法还有第二种形式: boolean startWith(String str, int startIndex) boolean endsWith(String str) 上面的方法用来判断一个给定的字符串是否是从指定的字符串开始或结束。 * int compareTo(String str) 方法用于比较两个字符串的大小。字符串比较的结果及其含义:值 | 含义 |
小于0 | 调用此方法的字符串小于参数str |
大于0 | 调用此方法的字符串大于参数str |
等于0 | 两个字符串相等 |
相关文章
- 暂无相关文章
用户点评