Java String和StringBuffer两个类。

一. Java 字符串类基本概念
在JAVA语言中,字符串数据实际上由String类所实现的。Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串;二类是在程序中会被改变长度的可变字符串。Java环境为了存储和维护这两类字符串提供了  String StringBuffer 两个类。
 一、创建字符串
例: String str=new String();
String str= new String "This is a String" );

或者  String str= "This is a String" ;

  二、得到字符串对象的有关信息
1.通过调用 length() 方法得到String的长度.
例:
String  str= "This is a String" ;
int  len =str.length();

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
System.out.print("请输入用户名:");
String name=in.next();
System.out.print("请输入密码:");
String psw=in.next();
if(psw.length()>=6){
System.out.println("注册成功!");
}else{
System.out.println("密码长度不能小于6位");
}
}
2.StringBu ffer类的 capacity() 方法与String类的  length() 的方法类似,但是她 测试 是分配给StringBuffer的内存空间的大小,而不是当前被使用了的内存空间。
3.如果想确定字符串中指定字符或子字符串在给定字符串的位置,可以用  indexOf() lastIndexOf() 方法。

String  str= "This is a String" ;
Int index1 =str.indexOf( "i" );    //index=2
Intindex2=str.indexOf(‘i‘,index+1);   //index2=5
Intindex3=str.lastIndexOf("I");   //index3=15
Intindex4=str.indexOf("String");  //index4=10


三、String对象的比较和操作
1.String对象的比较
String类的equals()方法用来确定两个字符串是否相等。

String  str= "This is a String" ;
Boolean result=str.equals( "This is another String" );
//result=false


2.String对象的访问
A、方法 charAt() 用以得到指定位置的字符。

String  str= "Thisis a String" ;
char  chr=str. char At(3);  //chr="i"


B、方法 getChars() 用以得到字符串的一部分字符串

public   void getChars( int  srcBegin, int srcEnd, char []dst, int dstBegin)
String  str= "Thisis a String" ;
Char chr = new   char [10];
Str.getChars(5,12,chr,0);   //chr="isa St"


C、 subString() 是提取字符串的另一种方法,它可以指定从何处开始提取字符串以及何处结束。
3.操作字符串
A、 replace() 方法可以将字符串中的一个字符替换为另一个字符。

String  str= "Thisis a String" ;
String  str1=str.replace(‘T‘,‘t‘);  //str1="thisis a String"


B、concat()方法可以把两个字符串合并为一个字符串。

String  str= "Thisis a String" ;
String  str1=str.concat( "Test" );  //str1="Thisis a String Test"


C、 toUpperCase() toLowerCase() 方法分别实现字符串大小写的转换。

String  str= "THISIS A STRING" ;
String  str1=str.toLowerCase();  //str1="thisis a string";


D、trim()方法可以将字符串中开头和结尾处的空格去掉.

String  str= "Thisis a String   " ;
String  str1=str.trim();    //str1="This is a String"


E、String类提供静态方法 valueOf() ,它可以将任何类型的数据对象转换为一个字符串。如

System.out.println( String ,ValueOf(math,PI));


四、修改可变字符串
StringBuffer类为可变字符串的修改提供了3种方法,在字符串中间插入和改变某个位置所在的字符。
1.在字符串后面追加:用 append() 方法将各种对象加入到字符串中。
2.在字符串中间插入:用 insert() 方法。例

StringBuffer str= new  StringBuffer( "Thisis a String" );
Str.insert(9, "test" );
System.out.println(str.toString());


这段代码输出为:Thisis a test String
3.改变某个位置所在的字符,用 setCharAt() 方法。
StringBuffer sb =new StringBuffer("aaaaaa");
sb.setCharAt(2, “b”); // 结果aabaaa
 

二.字符串分割
1.利用字符串类的split方法进行分割
     /** */ /**利用字符串的split方法进行分割
     *  @param  str 待分割的字符串
     *  @param  sdelimiter 分割符
     *  @return
     */
     public  String[] splitString(String str,String sdelimiter) ... {
        String[] array=str.split(sdelimiter);
         return  array;
    }
2.利用StringTokenizer来进行字符串分割
     /** */ /**利用StringTokenizer来进行字符串分割
     *  @param  str  待分割的字符串
     *  @param  sdelimiter  分割符
     *  @return
     */
     public  String[] useStringTokenizer(String str,String sdelimiter) ... {
        StringTokenizer token= new  StringTokenizer(str,sdelimiter);
        String[] array= new  String[token.countTokens()];
         int  i=0;
         while (token.hasMoreTokens()) ... {
            array[i]=token.nextToken();
            i++;
        }
         return  array;
    }
三.字符串数组排序
/** */ /**对字符串数组进行排序
     *  @param  str 原始字符串数组
     *  @param  flag flag=0:顺序排序  flag=1:倒序排序
     *  @return  排序后的字符串数组
     */
     public  String[] sort(String[] str, int  flag) ... {
         if (str== null ||str.length==0)
             throw   new  IllegalArgumentException();
        String temp=str[0];
         //顺序排列 ,即从小到大
         if (flag==0) ... {
             for ( int  i=0;i<str.length-1;i++) ... {
                 for ( int  j=i+1;j<str.length;j++) ... {
                     if (str[i].compareTo(str[j])>0) ... {
                        temp=str[i];
                        str[i]=str[j];
                        str[j]=temp;
                    }
                }
            }
        }
         else   if (flag==1) ... { //倒序排列
             for ( int  i=0;i<str.length-1;i++) ... {
                 for ( int  j=i+1;j<str.length;j++) ... {
                     if (str[i].compareTo(str[j])<0) ... {
                        temp=str[i];
                        str[i]=str[j];
                        str[j]=temp;
                    }
                }
            }
        }
         return  str;
    }
四.使用Hashtable对字符串进行碰撞
利用hashtable对字符串进行过滤,两个字符数组之间的比较,对字符串数组进行过滤
1.在一些字符串数组中,常会有重复的记录,比如手机号码,我们可以通过Hashtable来对其进行过滤
public  String[] checkArray(String[] str) ... {
        Hashtable<String, String> hash= new  Hashtable<String, String>();

         for ( int  i=0;i<str.length;i++) ... {
             if (!hash.containsKey(str[i]))
                hash.put(str[i], str[i]);
        }

        Enumeration enumeration=hash.keys();
        String[] str_new= new  String[hash.size()];
         int  i=0;

         while (enumeration.hasMoreElements()) ... {
            str_new[i]=enumeration.nextElement().toString();
            i++;
        }
         return  str_new;
    }

示例:
        String[]mobile={"13811071500","13811071500","13811071501","13811071503","13811071501"};
        mobile=checkArray(mobile);
        for(int i=0;i<mobile.length;i++)
           System.out.println(mobile[i]);
       输出结果为:
        13811071503
        13811071501
        13811071500
2.A,B均为字符串数组,找出在A中存在,而在B中不存在的字符串
    public String[] compareArray(String[] A,String[] B){
        Hashtable<String, String> hash=newHashtable<String, String>();
        Hashtable<String, String>hash_new=new Hashtable<String, String>();

        for(int i=0;i<B.length;i++)
            hash.put(B[i], B[i]);

        for(int i=0;i<A.length;i++){
           if(!hash.containsKey(A[i]))
               hash_new.put(A[i], A[i]);
        }

        String[] C=new String[hash_new.size()];
        int i=0;
        Enumeration enumeration=hash_new.keys();

        while(enumeration.hasMoreElements()){
           C[i]=enumeration.nextElement().toString();
            i++;
        }
        return C;
    }
示例:
        String[] mobile1={"13811071500","13811071501","13811071502","13811071503","13811071504"};
        String[]mobile2={"13811071500","13811071505","13811071502","13811071506","13811071504"};
        String[]mobile3=compareArray(mobile1,mobile2);
        for(int i=0;i<mobile3.length;i++)
           System.out.println(mobile[i]);
输出结果:
    13811071503
    13811071501
存在的问题:
每次都是倒序,可以再对程序稍加改动,变成正序。
3.将一个字符串数组中某一个特定的字符串过滤掉
/** */ /**检验一个字符串数组,若包含某一特定的字符串,则将该字符串从数组中删
除,返回剩余的字符串数组
     *  @param  str_array  字符串数组
     *  @param  str_remove 待删除的字符串
     *  @return  过滤后的字符串
     */
     public  String[] removeStrFromArray(String[] str_array,String
str_remove) ... {
        Hashtable<String, String> hash= new  Hashtable<String, String>();
         for ( int  i=0;i<str_array.length;i++) ... {
             if (!str_array[i].equals(str_remove))
                hash.put(str_array[i], str_array[i]);
        }
         //生成一个新的数组
        String[] str_new= new  String[hash.size()];
         int  i=0;
        Enumeration enumeration=hash.keys();
         while (enumeration.hasMoreElements()) ... {
            str_new[i]=enumeration.nextElement().toString();
            i++;
        }
         return  str_new;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值