Java字符串之使用String

    在Java中,字符串是一个对象,不是字符的数组,这和其他编程语言不一样。java.lang.String定义了字符串类型。该类提供了字符串的查找、替换等操作字符串的方法。除了java.lang.String类之外,java.lang.StringBuffer也是一个常用的操作字符串的类,它具备了String类的大部分功能,常用于修改字符串,效率比String类要高一些。还有一个类java.util.StringTokenizer,只要用于分解字符串,将字符串分解成多个标记。从JDK1.4开始,Java开始支持正则表达式,java.util.regex包实现了正则表达式。

一,使用String
    用String类操作字符串有如下关键技术点
    1、String的indexOf和lastIndexOf实例方法用于查找子串。
    2、substring实例方法用于截取子串。
    3、replace,replaceFirst和replaceAll实例方法用于替换子串。
    4、toUpperCase和toLowerCase实例方法用于转换字符串的大小写。
    5、charAt实例方法获取字符串上某个位置的字符
    6、compareTo和compareToIgnoreCase方法比较字符串,后者是比较时不区分大小写
    7、equals方法判断字符串是否相等
    8、startsWith方法判断字符串是否以某前缀开始,endswith方法判断字符串是否以某后缀结束。
    9、String类能够处理正则表达式,matches方法用于正则表达式匹配字符串;split方法根据正则表达式把字符串分解成多个子串。
   
下面示例代码练习使用各种方法:

package  book.oo.String;
/**
 * 使用字符串类String
 * 
@author Administrator
 *
 
*/


public   class  UsingString  {
    
/** 查找子字符串 */
    
public static void testFindStr(String str) {
        
//返回子字符串在字符串中最先出现的位置,如果不存在,返回负数
        System.out.println("str.indexOf("is") = " + str.indexOf("is"));
        
//可以给indexOf方法设置参数,指定查找的起始位置
        System.out.println("str.indexOf("is", 4) = " + str.indexOf("is"4));
        
//返回子字符串在字符串中最后出现的位置,如果不存在,返回负数
        System.out.println("str.lastIndexOf("is") = " + str.lastIndexOf("is"));
        
//可以给lastIndexOf方法设置参数,指定查找的结束位置
        System.out.println("str.lastIndexOf("is", 1) = " + str.lastIndexOf("is"1));
    }

    
    
/** 截取字符串 */
    
public static void testSubStr(String str) {
        
//subsring方法截取字符串,可以制定截取的起始位置和终止位置
        
//默认终止位置为字符串末尾
        System.out.println("str.substring(2) = " + str.substring(2));
        System.out.println(
"str.substring(2, 9) = " + str.substring(29));
    }

    
    
/** 替换字符串 */
    
public static void testReplaceStr(String str) {
        
//将字符串中的某个字符替换成另一个字符
        System.out.println("str.replace('i', 'I') = " + str.replace('i''I'));
        
//将字符串中的某个子字符串替换成另一个字符串
        System.out.println("str.replaceAll("is", "IS") = " + str.replaceAll("is""IS"));
        
//将字符串中的某个子字符串的第一个替换成另一个字符串
        System.out.println("str.replaceFirst("is", "IS") = " + str.replaceFirst("is""IS"));
    }

    
    
/** 转换大小写 */
    
public static void testToUpperOrLower(String str) {
        
//将字符串全部变成大写形式
        System.out.println("str.toUpperCase() = " + str.toUpperCase());
        
//将字符串全部变成小写形式
        System.out.println("str.toLowerCase() = " +  str.toLowerCase());
    }

    
    
/** 获取字符串中某个位置上的字符 */
    
public static void testCharAt(String str) {
        
//返回字符串某个位置上的字符
        System.out.println("str.charAt(2) = " +  str.charAt(2));
        
//将字符串转换成字符数组,数组长度为字符串的长度
        System.out.println(str.toCharArray());
    }

    
    
/** 比较字符串的大小 */
    
public static void testCompareStr(String str) {
        
//compareTo方法比较来年改革字符串的大小,比较规则:
        
//首先比较第一个字符,根据字符编码比,如果字符编码比目标字符小,则返回负数
        
//如果相等则继续比较第二个字符,大则返回正数
        System.out.println("str.compareTo("I am in Chongqing") = " + str.compareTo("I am in Chongqing"));
        
//compareToIgnoreCase在比较的时候忽略字符的大小写,认为同一字符的大小写相等
        System.out.println("str.compareToIngoreCase("I am in Chongqing") = " + str.compareToIgnoreCase("I am in Chongqing"));
    }

    
    
/** 比较字符串是否相等 */
    
public static void testEqualsStr(String str) {
        
//比较字符串的值是否相等
        System.out.println("str.equals("I am in Chongqing") = " + str.equals("I am in Chongqing"));
        
//比较字符串的值时不区分大小写
        System.out.println("str.equalsIgnoreCase("I am in Chongqing") = " +  str.equalsIgnoreCase("I am in Chongqing"));
        
//判断字符串是否以某个子字符串开始
        System.out.println("str.startsWith("Th") = " + str.startsWith("Th"));
        
//判断字符串是否以某个子字符串结尾
        System.out.println("str.endsWith("t!") = " + str.endsWith("t!"));
    }

    
    
/** 
     * String类也可以根据正则表达式操作字符串
     * 包括字符串匹配、替换和分解
     
*/

    
public static void testRegex() {
        String str 
= "aab      aaa  bb    ab";
        String pattern1 
= "^[ a-zA-Z| ]*$";    //该正则表达式表示包含任意多个英文字母或者空格
        System.out.println("用正则表达式匹配成功?" + str.matches(pattern1));
        System.out.println(str.replaceAll(
"/s{2,}"" "));    //将字符串中的连续空格换成一个空格
        System.out.println(str.replaceFirst("/s{2,}"" "));    //将字符串中的第一个连续空格换成一个空格
        
//分解字符串,按空格分解,多个连续空格当作一个空格
        String[] ss = str.split("/s{1,}");
        System.out.println(
"用正则表达式按空格分解:");
        
for(int i = 0; i < ss.length; i++{
            System.out.println(ss[i]);
        }

        
//限制分解后的数组大小
        System.out.println("用正则表达式按空格分解,指定最大分解段数为3:");
        ss 
= str.split("/s{1,}"3);
        
for(int i = 0; i < ss.length; i++{
            System.out.println(ss[i]);
        }

        
    }

    
    
public static void main(String[] args) {
        String str 
= "This is a String Object!";
        System.out.println(
"str的值:" +  str);
        
        UsingString.testFindStr(str);
        System.out.println();
        UsingString.testSubStr(str);
        System.out.println();
        UsingString.testReplaceStr(str);
        System.out.println();
        UsingString.testToUpperOrLower(str);
        System.out.println();
        UsingString.testCharAt(str);
        System.out.println();
        UsingString.testCompareStr(str);
        System.out.println();
        UsingString.testEqualsStr(str);
        System.out.println();
        UsingString.testRegex();
    }

}

 程序输出是:

str的值:This  is  a String Object !
str.indexOf(
" is " =   2
str.indexOf(
" is " 4 =   5
str.lastIndexOf(
" is " =   5
str.lastIndexOf(
" is " 1 =   - 1

str.substring(
2 =   is   is  a String Object !
str.substring(
2 9 =   is   is  a

str.replace(
' i ' ' I ' =  ThIs Is a StrIng Object !
str.replaceAll(
" is " " IS " =  ThIS IS a String Object !
str.replaceFirst(
" is " " IS " =  ThIS  is  a String Object !

str.toUpperCase() 
=  THIS IS A STRING OBJECT !
str.toLowerCase() 
=   this   is  a  string   object !

str.charAt(
2 =  i
This 
is  a String Object !

str.compareTo(
" I am in Chongqing " =   11
str.compareToIngoreCase(
" I am in Chongqing " =   11

str.equals(
" I am in Chongqing " =   false
str.equalsIgnoreCase(
" I am in Chongqing " =   false
str.startsWith(
" Th " =   true
str.endsWith(
" t! " =   true

用正则表达式匹配成功?
true
aab aaa bb ab
aab aaa  bb    ab
用正则表达式按空格分解:
aab
aaa
bb
ab
用正则表达式按空格分解,指定最大分解段数为3:
aab
aaa
bb    ab
注意:String是一个不变类,当字符串发生变化时,它会创造一个新的字符串,原字符串不变,因此,为了提高性能,在进行修改字符串的操作时,避免使用String类,可以使用StringBuffer类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值