黑马程序员---java基础------------------String类

String:

  1:public final class String extends Object 

      String s1 = "abc";                          //s1是一个类类型变量, "abc"是一个对象。       //字符串最大特点:一旦被初始化就不可以被改变。

      String s2 = new String("abc");     //s2是两个对象,s2和“abc”这是s1和s2的区别所在。

      String s3 = "abc";                         

      System.out.println(s1==s2);       //两个对象                                                                                                           false

      System.out.println(s1.equals(s2));     //String类复写了Object类中equals方法,该方法用于判断字符串地址是否相同。    true 

      System.out.println(s1==s3));                                                                                                                              true

  2:String类是对字符串事物的描述。该类定义了专门用于操作字符串的方法。常见的操作方法如下:

      获取: 

          字符串中的包含的字符数,也就是字符串的长度。》》》》》》》》》》》》》int length():获取长度。

          根据位置获取位置上某个字符。》》》》》》》》》》》》》》》》》》》》》char charAt(int index):

          根据字符获取该字符在字符串中位置。》》》》》》》》》》》》》》》》》》

              int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。

              int indexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。

              int indexOf(String str):返回的是str在字符串中第一次出现的位置。

              int indexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。

              int lastIndexOf(int ch) :

      判断:

          字符串中是否包含某一个子串。》》》》》》》》》》》》》》》》》》》》boolean contains(str):

              特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含。

              if(str.indexOf("aa")!=-1)而且该方法即可以判断,也可以获取出现的位置。

          字符中是否有内容。》》》》》》》》》》》》》》》》》》》》》》》》》boolean isEmpty(): 原理就是判断长度是否为0.

          字符串是否是以指定内容开头。》》》》》》》》》》》》》》》》》》》》》》》》boolean startsWith(str);

          字符串是否是以指定内容结尾。》》》》》》》》》》》》》》》》》》》》》》》》boolean endsWith(str);

          判断字符串内容是否相同。复写了Object类中的equals方法。》》》》》》》》》》》boolean equals(str);

          判断内容是否相同,并忽略大小写。》》》》》》》》》》》》》》》》》》》》》》》boolean equalsIgnoreCase();

      转换:

          将字符数组转成字符串。》》》》》》》》》》》》》》》》》》》》》》》》》

              构造函数:String(char[])

                     String(char[],offset,count):将字符数组中的一部分转成字符串。

              静态方法:static String copyValueOf(char[]);     

                   static String copyValueOf(char[] data, int offset, int count)

                   static String valueOf(char[]):

          将字符串转成字符数组。》》》》》》》》》》》》》》》》》》》》》》》》》》》char[] toCharArray():

          将字节数组转成字符串。》》》》》》》》》》》》》》》》》》》》》》》》》》》String(byte[])

          将字节数组中的一部分转成字符串。》》》》》》》》》》》》》》》》》》》》》》String(byte[],offset,count):

          将字符串转成字节数组。》》》》》》》》》》》》》》》》》》》》》》》》》》》byte[]  getBytes():

          将基本数据类型转成字符串。》》》》》》》》》》》》》》》》》》》》》》》》》

                   static String valueOf(int)

                   static String valueOf(double)

                   特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

     替换:

          String replace(oldchar,newchar);

     切割:

          String[] split(regex);

     子串。获取字符串中的一部分。

          String substring(begin);                                                 String substring(begin,end);

     转换,去除空格,比较。

          将字符串转成大写或则小写。》》》》》》》》》》》》》 String toUpperCase();                               String toLowerCase(); 

          将字符串两端的多个空格去除:》》》》》》》》》》》》 String trim();

          对两个字符串进行自然顺序的比较。》》》》》》》》》》int compareTo(string);

去空格:

 public static String myTrim(String str)  {   

      int start = 0,end = str.length()-1;//长度减一正好是最后一个字符的角标

       while(start<=end && str.charAt(start)==' ')    

          start++;

       while(start<=end && str.charAt(end)==' ')    

          end--;

       return str.substring(start,end+1);  //这个方法是提取包含头不包含尾的,所以end要加1

}

字符串反转:

public static String reverseString(String s,int start,int end)  {   

    //字符串变数组。   

    char[] chs = s.toCharArray();

    //反转数组。   

    reverse(chs,start,end);

    //将数组变成字符串。   

    return new String(chs);  

}  

public static String reverseString(String s)  {   

    return reverseString(s,0,s.length());     

}

private static void reverse(char[] arr,int x,int y)  {   

    for(int start=x,end=y-1;        start<end ;         start++,end--)   {    

        swap(arr,start,end);   

    }  

}  

private static void swap(char[] arr,int x,int y)  {   

    char temp = arr[x];   

    arr[x] = arr[y];   

    arr[y] = temp;  

}

获取一个字符串在另一个字符串中出现的次数。

 public static int getSubCount_1(String str,String key)  {   

    int count = 0;   int index = 0;

    while((index=str.indexOf(key))!=-1)   {    //只要没有找到那个key就循环去找

        sop("str="+str);    

        str = str.substring(index+key.length());     //找到了key第一次出现的位置,再加上KEY的长度就可以从第一次出现的位置后去找key的位置,找到了就++

        count++;    

    }   

    return count;  

}

或者下面

public static int getSubCount_2(String str,String key)  {   

    int count = 0,index = 0;

    while((index= str.indexOf(key,index))!=-1)   {    

        sop("index="+index);    

        index = index + key.length();

        count++;   

    }   

    return count;  

}

获取两个字符串中最大相同子串:    将短的那个子串按照长度递减的方式获取到。     将每获取到的子串去长串中判断是否包含,如果包含,已经找到!。

public static String getMaxSubString(String s1,String s2)  {

    String max = "",min = "";

    max = (s1.length()>s2.length())?s1: s2;

    min = (max==s1)?s2: s1;   

    //  sop("max="+max+"...min="+min);   

    for(int x=0; x<min.length(); x++)   {    

        for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++)    {     

            String temp = min.substring(y,z);          

            sop(temp);     

            if(max.contains(temp))       //if(s1.indexOf(temp)!=-1)      

                return temp;    

        }   

     }   

     return "";  

}

StringBuffer:是字符串缓冲区,是一个容器。

          特点:长度是可变化的;可以字节操作多个数据类型;最终会通过toString方法变成字符串。  

          功能:

              存储:

                  StringBuffer append():将指定数据作为参数添加到已有数据结尾处。

                  StringBuffer insert(index,数据):可以将数据插入到指定index位置。

              删除:

                  StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。

                  StringBuffer deleteCharAt(index):删除指定位置的字符。

              获取。

                  char charAt(int index)

                  int indexOf(String str)

                  int lastIndexOf(String str)

                  int length()

                  String substring(int start, int end)

              修改:

                  StringBuffer replace(start,end,string);

                  void setCharAt(int index, char ch) ;

              反转: StringBuffer reverse();

              将缓冲区中指定数据存储到指定字符数组中: void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

JDK1.5 版本之后出现了StringBuilder:StringBuffer是线程同步。 StringBuilder是线程不同步。建议使用StringBuilder

基本数据类型对象包装类

     基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串类型之间做转换。

            1:基本数据类型转成字符串。

              基本数据类型.toString(基本数据类型值);               Integer.toString(34);

              2:字符串转成基本数据类型。

              xxx a = Xxx.parseXxx(String);       double b = Double.parseDouble("12.23"); //必须传入数字格式的字符串。                   

                      Integer i = new Integer("123");           int num = i.intValue();

            3:十进制转成其他进制:     toBinaryString();       toHexString();       toOctalString();

            4:其他进制转成十进制:     parseInt(string,radix);

    对象包装类新特性:       

        Integer x = new Integer(4);

        Integer x = 4;//自动装箱。等同于new Integer(4)

        x = x         /*相当于 x.intValue() */         + 2;       //x+2:x 进行自动拆箱。变成成了int类型。和2进行加法运算。再将和进行装箱赋给x。但是新特性有

            一个弱点,就是Integer x = null;这样是不行的,因为它的指向为空的话x.intValue()就会抛空指针异常,所以在进行装箱和拆箱的时候要先判

            断是否null,

 

          

    
          

posted @ 2013-05-26 17:45  zhao198627  阅读(131)  评论(0编辑  收藏  举报