java学习笔记String类小结及应用


一、字符串概述

字符串是一个特殊的对象,(java.lang.string)此类不能被覆写。

字符串的最大特点:一旦初始化就不可以被改变。指向可以改变,但对象本身绝对不会变。

定义方式:Stringstr = “abc”;      String str1 = newString(“abc”);

字符串类覆写了object类中的equals方法,该方法用于判断字符串内容是否相同。

两种方式字义字符串的区别:

String s1 = “abc”;    String s2 = new String(“abc”);

S1在内存中有一个对象,S2在内存中有两个对象。(new是一个对象,abc是一个对象)

字符串一但声明,值不可以改变:

String s1 = “abc”;     String s2 = new String(“abc”);      String s3 = “abc”;

问:s1==s2 ?   s1==s3?    答 :   false    true



二、字符串方法详述——获取

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

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

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

              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(String str):反向索引返回指定字符在字符串中最后一次出现的索引。

              int lastIndexOf(String str,int fromIndex):

              int lastIndexOf(int ch):返回的是ch在字符串中最后一次出现的位置。从索引处反向搜

              int lastIndexOf(int ch,int fromIndex):

              int codePointAt(int index):返回指定索引处字符的ASCII码。


三、字符串方法详述——判断

        1、字符串中是否包含某一个子串。

               Boolean contains(str); 

               特殊之处:indexOf(str):可以索引str第一次出现位置。如果返回-1,表示该str不在字符串中存在。所以也                  可以用于对指定判断是否包含if(str.indexOf(“aa”)!=-1)而且该方法即可以判断,又可以获取出现的位置。

         2、字符串中是否有内容。

               Boolean isEmpty(); 当length()为0时返回true。否则返回false(此方法在1.6版本以后)

         3、字符串是否是以指定内容开头。    BooleanstartsWith(str);

         4、字符串是否是以指定内容结尾。

               Boolean startsWith(str);

         5、判断字符串内容是否相同,复写了object类中的equals方法。

               Boolean equals(str);

         6、判断内容是否相同,并忽略大小写。

               Boolean equalsIgnoreCase();


四、字符串方法详述——转换

        1、将字符数组转成字符串。

              构造函数:String(char[]):将字符数组转成字符串。

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

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

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

             static String valueOf(char[]);  将任意类型返回字符数组的字符串表示形式。

        2、将字符串转成字符数组。

             char[] toCharArrar():无参数,因为对象调用。

        3、将字节数组转成字符串。

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

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

        4、将字符串转成字节数组。

            byte[] getBytes();

        5、将基本数据类型转成字符中。

           static String valueOf(int);

           static String valueOf(double);

           eg:3+””;   String.valueOf(3);    注:此两种形式效果一样。

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

 

五、字符串方法详述——替换

Stringreplace(oldchar,newchar);

eg:String s = “Hello java”;      String s1 = s.replace(‘a’,’n’);

注:此两个语句执行后s为Hellojava  s1为Hello jnvn 因为字符串一旦初始化值不会变

注:此方法若要替换的字符不存在则返回原字符串。

Sting replace(“oldstring” ,”newstring”);  替换字符串序列。


六、字符串方法详述——切割

String[] split(regex);

eg:  String s = “zhangsan,lisi,wangwu”;    String[] arr = s.split(“,”); 

分割结果为:zhangsan  lisi  wangwu


七、字符串方法详述——子串(获取字符串中的一部分)   (注意角标越界异常)

Stringsubstring(int begin);    eg:String s = “abcdef”;    s.substring(2);   结果为:cdef

Stringsubstring(int begin,end);     s.substring(2,4);   结果为:cd  (包含头,不包含尾)


八、字符串方法详述——转换、去除空格、比较

   1、将字符串转成大写或者小写。

   String toUpperCase();    eg: s. toUpperCase();

   String toLowerCase();    eg: s. toLowerCase();

   2、将字符串两端的多个空格去除。(实例用于控制密码输入)

   String trim();     eg:s. trim();

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

   int compareTo(string);   eg: s1.compare(s2);   

   返回值:等于参数字符串返回0大于参数字符串返回一个大于0的值,否则返回一个小于0的值。


字符串演示案例1:模拟一个trim方法,去除字符串两端的空格

思路:1、判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为                   止。结尾处判断空格也是如此。

           2、当开始和结尾都判断到不是空格时,就是要获取字符串。

classStringTest

{

         public static void sop(String str)

         {

         System.out.println(str);

}

public static void main(String[] args)    //  主函数

{

         String s= “     ab cd    ”;

         sop(“(+s+)”);

         s =myTrim(s);      //  调用去空格方法

sop(“(+s+)”);

}

//  练习一

public static String myTrim(String str)

{

         intstart=0; end=str.length()-1;

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

                   start++;

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

                   end--;

         returnstr.substring(start,end+1);    // 因为获取子串不包含尾所以+1

}

}


字符串演示案例2:

将一个字符串进行反转。将字符串中指定部分进行反转,“abcdefg”;“abfedcg”。

思路:1、曾经学习过对数组的元素进行反转。

           2、将字符串变成数组,对数组反转。

           3、将反转后的数组变成字符串。

           4、只要将或反转的部分的开始和结束位置作为参数传递即可。

classStringTest

{

         public static void sop(String str)   //  定义方法用于输出简单

         {

         System.out.println(str);

}

public static void main(String[] args)    //  主函数

{

         String s= “     ab cd    ”;

         sop(“(+s+)”);

         sop(“(”+reverseString(s)+”)”);

         sop(“(”+reverseString(s,6,9)+”)”);    //  结果为“      bacd    ”

}

//  练习二将字符串反转

public static String reverseString(String s,intstart,int end)    //  重载

{

         char[]chs = s.toCharArray();    // 字符串变数组

         reverse(chs,start,end)    //  反转数组

         returnnew String(chs);      // 将数组变成字符串

}

public static String reverseString(String s)     //  重载

{

         // char[]chs = s.toCharArray();    // 字符串变数组

         // returnnew String(chs);     // 反转数组变成字符串

         returnreverseString(s,0,s.length());     // 调用方法,参数从0到最后截取就是正串反转

}

private static void reverse(char[] arr)           // 定义方法用于转换

{

         for(intstart=0,end=arr.length-1;start<end;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;

}

}


字符串演示案例3:

获取两个字符串中最大相同子串,第一个动作:将短的那个串进行长度依次递减的字符串打印。“abcwerthelloyuiodef”“cvhellobnm”

思路:1、将短的那个子串按照长度递减的方式获取到。

           2、将每获取到的子串去长串中判断是否包含,如果包含,已经找到!

class StringTest3

{

         publicstatic String getMaxSubString(String s1, String s2)  // 定义方法获取是否包含字符串

         {

                   Stringmax = “”,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””;

}

public static voidmain(String[] args)     //主函数

         {

                   Strings1= “abcwerthelloyuiodef”;

                   Strings2= “cvhellobnm”;

                  getMaxSubString(s1, s2)

         }

         publicstatic void sop(String str)

         {

         System.out.println(str);

}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值