[置顶] 黑马程序员_String类

时间:2022-08-27 09:45:56

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------

String类:

 

特点:

 

 

1、字符串是一个特殊的对象。 

 

2、字符串一旦初始化就不可以被改变。

 

3、String不能被继承。

 

 

一个常见的面试题:

 

 String str = “abc” 和 String str1 = new String(“abc”);的区别:

 

 “abc”是一个对象,前者只创建了一个对象,后者为两个对象。

 

1、获取

 

字符串中的包含的字符数,也就是字符串的长度。

int length();

 

根据位置获取位置上的某个字符。

char charAt(int index);

 

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

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

int indexOf(int ch,int fromIndex);从fromIndex指定位置开始,查找ch在在字符串中出现的位置;

 

2、判断

 

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

 

字符串中是否有内容。         boolean isEmpty()

 

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

 

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

 

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

 

3、转换

 

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

 

构造函数:String(char[]),String(char[],offset,count);

 

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

 

Static String copyValueOf(char[],offset,count);

 

Static String valueOf(char[]);将基本数据类型转换为String。

 

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

char[] toCharArray();

 

将字节数组转换成字符串。

 

将字符串转换成字节数组。

Byte[] getBytes();

 

4、替换

 

replace(oldchar,newchar);返回的是一个新的字符串。如果要替换的字符不存在,返回的还是原字符串。

replace(str,restr);

 

5、切割

 

String[] split(regex);

 

子串

String substring(begin);

String substring(begin,end);

 

转换大小写,去除空格,比较

将字符串转成大写或小写。

String toUpperCase();

String toLowerCase();

 

将字符串两端的多个空格去除。

String trim();

对两个字符串进行自然顺序的比较。

Int compareTo(String);

 

练习1:去除字符串两端的空格。

 

Java代码  [置顶]        黑马程序员_String类
  1. public static String myTrim(String str) {  
  2.           
  3.         int start = 0,end = str.length()-1;//初始化两个指针变量,一前一后  
  4.   
  5.         while(start<=end && str.charAt(start)==' '//从前取第一个不为空格的角标值  
  6.             start++;  
  7.   
  8.         while(start<=end && str.charAt(end)==' ')//从后往前取第一个不为空格的角标值  
  9.             end--;  
  10.   
  11.         return str.substring(start,end+1);//截取这个字符串  
  12.     }  

 

 

练习2:将字符串反转。

 

Java代码  [置顶]        黑马程序员_String类
  1. public static String reverseString(String s,int start,int end) {  
  2.           
  3.         //字符串变数组。  
  4.         char[] chs = s.toCharArray();  
  5.   
  6.         //反转数组。  
  7.         reverse(chs,start,end);  
  8.   
  9.         //将数组变成字符串。  
  10.         return new String(chs);  
  11.     }  
  12.   
  13.     /** 
  14.      * 将数组元素进行反转 
  15.      * @param arr 
  16.      * @param x 
  17.      * @param y 
  18.      */  
  19.     private static void reverse(char[] arr,int x,int y) {  
  20.           
  21.         for(int start=x,end=y-1; start<end ; start++,end--) {  
  22.               
  23.             swap(arr,start,end);  
  24.         }  
  25.     }  
  26.       
  27.     /** 
  28.      * 交换元素方法 
  29.      * @param arr 
  30.      * @param x 
  31.      * @param y 
  32.      */  
  33.     private static void swap(char[] arr,int x,int y) {  
  34.           
  35.         char temp = arr[x];  
  36.         arr[x] = arr[y];  
  37.         arr[y] = temp;  
  38.     }  

 

 

练习3:获取一个字符串在另一个字符串里出现的次数。

 

Java代码  [置顶]        黑马程序员_String类
  1. public static int getSubCount(String str,String key) {  
  2.           
  3.         //初始化两个指针  
  4.         int count = 0;  
  5.         int index = 0;  
  6.   
  7.           
  8.         while((index=str.indexOf(key))!=-1) {//判断字符串中是否有这个字符串,并记录角标值  
  9.               
  10.             System.out.println("str="+str);  
  11.             str = str.substring(index+key.length());//截取从上一次出现字符串的位置到最后剩下的字符串  
  12.   
  13.             count++;    //记录出现的次数  
  14.         }  
  15.         return count;  
  16.     }  

 

 

练习4:获取两个字符串中最大相同子串。

 

Java代码  [置顶]        黑马程序员_String类
  1. public static String getMaxSubString(String s1,String s2) {  
  2.   
  3.         String max = "",min = "";//初始化两个字符串  
  4.   
  5.         max = (s1.length()>s2.length())?s1: s2; //将长度较大的那个字符串赋值给max  
  6.   
  7.         min = (max==s1)?s2: s1;//将长度小的赋值给min  
  8.           
  9.   
  10.         /** 
  11.          * 比较思想:拿长度较小的字符串去判断是否包含在长字符串中,如果没有包含 
  12.          * 则将短串的长度缩减1,会出现两个子串,再去比较,如果没有,再缩减1个长度 
  13.          * 此时出现3个子串,依次类推,直至出现包含的情况,即是最大长度的子串。 
  14.          */  
  15.         for(int x=0; x<min.length(); x++) {  
  16.               
  17.             for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++) {  
  18.                   
  19.                 String temp = min.substring(y,z);  
  20.                   
  21.                 System.out.println(temp);  
  22.                 if(max.contains(temp))  
  23.                     return temp;  
  24.             }  
  25.         }  
  26.         return "";  
  27.     }  

 

 

StringBuffer类:

 

 

StringBuffer是字符串缓冲区,是一个容器。长度是可变的,可以字节操作多个数据类型。最终会通过toString方法变成字符串。

 

 

 

1、存储 StringBuffer append():将字符串添加大已有数据的结尾处。

 

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

 

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

 

3、 获取

char charAt(int index);

 

int indexOf(String str);

 

int lastIndexOf(String str);

 

int length();

 

String substring(int start,int end); 

 

4、修改

 

StringBuffer replace(start,end,str);

 

Void setCharAt(int index,char ch);

  

JDK升级的三个因素:

 

1、 提高效率

 

2、 简化书写

 

3、 提高安全性

 

 

基本数据类型对象包装类。

 

    byte   Byte

    short  Short

    int     Integer

    long   Long

    boolean  Boolean

    float Float

    double  Double

    char   Character


---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------