码迷,mamicode.com
首页 > 其他好文 > 详细

String常用方法

时间:2015-02-12 01:52:40      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

 

String常用方法

String s1="abc" s1是一个类类型的变量,"abc"是一个对象

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

 

String s2=new String("abc") s1在内存中是一个对象,s2在内存中是两个对象

 

String覆写了Object的equals方法,比较的是两个字符串是否相等。

将此 String 与另一个 String 比较,不考虑大小写:boolean equalsIgnoreCase(str)

 

 

字符串常见操作

1.获取

    字符串长度:                 int length();

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

    根据字符ch获取在字符串中的位置: int indexOf(int ch);

    字符串str              int indexOf(String str);

    反向索引 int lastIndexOf(int ch);

 

 

2.判断

    是否包含某一子串:             boolean contains(String str)

    是否有内容:                  boolean isEmpty();

    是否以指定内容开头:           boolean startsWith(String str);

    是否以指定内容结尾:        boolean endsWith(String str);

    if(str.indexOf("aa")!=-1), 既可判断,又可以获取位置、

 

 

3.转换

       字符数组转换为字符串

        构造函数:String(char[] value)

        String(char[] value, int offset, int count):字符数组中一部分转换为字符串

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

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

        static String valueOf(char[] data):返回 char 数组参数的字符串表示形式。 [*]

 

    字符串转换为字符数组[☆]

        char[] toCharArray() :将此字符串转换为一个新的字符数组。

          

    字节数组转换为字符串

        String(byte[] bytes)

    

    字符串转换为字节数组

        byte[] getBytes(),字符串和字节数组在转换过程中可以指定编码表。

      

    返回 int 参数的字符串表示形式:static String valueOf(int i) //String.valueOf(3);3+"" [*]

 

 

4.替换

    String replace(char oldChar, char newChar);

    如果替换的字符不存在,则返回原串,String s1="hello java";

    String s2=s1.replace(‘a‘,‘n‘);

 

 

5.切割

    String[] split(String regex);

    ps:String s="zhangsan,lisi,wangwu";

        String[] arr=s.plit(",");

      

        

6.子串

    String substring(int beginIndex)

    String substring(int beginIndex, int endIndex) //包含头不包含尾,如果角标不存在,会发生角标越界异常

 

    

7.转换,比较,去空格

    转换大小写

         String toUpperCase()

         String toLowerCase()     

    去除两头空格

         String trim()

         ps: s.trim();

    两字符串自然顺序的比较

         int compareTo(String anotherString)

         ps: String s1="a1c"; //1的ASCII为49

              String s2="aaa";

              sop(s1.compareTo(s2));//返回-48

 

 

StringBuffer、StringBuilder区别

 

1.增

面盘理论

    StringBuffer sb=new StringBuffer();

    StringBuffer sb1=new StringBuffer(34);

    sb==sb1 是一个对象。添加了还是那个面盆。

    特点1.长度可变2.可以操作多种数据类型3.最终会通过toString方法变成字符串。

    

    sb.append("ad").append("true").append("false")支持方法调用链,生成一个长串。

    StringBuffer insert(int index, 数据) 将数据插入指定位置。

    

2.删

删完后还是那个面盆

    StringBuffer delete(int start,int end)         含头不含尾

    StringBuffer deleteCharAt(int index)         删除指定位置的数据

    sb.delete(0,sb.length());                    清空缓冲区

    

3.获取

    char charAt(int index);

    int indexOf(String str);

    int lastIndexOf(int ch);

    int length();

    String substring(int start,int end)

 

4.修改[☆]

    StringBuffer replace(int start,int end, String str) 含头不含尾,替换为str

    void setCharAt(int index, char ch)                 替换指定位置字符,不打印

    

5.翻转

    StringBuffer reverse()

 

 

JDK1.5之后出现了StringBuilder,此次升级时为了提高效率。

StringBuffer是线程同步的,多线程用建议用StringBuffer

StringBuilder是线程不同步的 ,单线程效率高

升级三因素:提高效率,简化书写,提高安全性

 

字符串练习

/**

* 两个字符串中最大相同子串<br>

* <b>思路</b><br>

* 获取短的字符串的子串,按长度递减的方式<br>

* 判断子串是否contains在较长串中<br>

* 如果包含,则返回子串,即最大子串<br>

* */

public class MaxSameString {

 

    public static void main(String[] args) {

        String s1="sdfhellofsda";

        String s2="sdhellodsd";

        System.out.println(getMaxSameString(s1,s2));

    }

    

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

          

        String max="",min="";

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

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

          

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

            for (int j = 0,k=min.length()-i; k!=min.length()+1; j++,k++) {

                String temp=min.substring(j,k);

                //System.out.println(temp);

                if (max.contains(temp)) {

                    return temp;

                }

            }

        }

        return null;//执行不到,但是必须加上。    

    }

 

}

 

import java.util.Arrays;

 

/**

* 获取一个字符串在另一个字符串中出现的次数<br>

* <b>思路:</b><br>

* 1.定义一个计数器,<br>

* 2.获取key第一次出现的位置<br>

* 3.从第一次出现位置后剩余的字符串中继续获取key出现的位置<br>

* 每 获取一次就计数一次 <br>

* 4.当获取不时,计数完成<br>

* 不建议使用切的形式ps:kkddkk,是2个字符串,kkddkkff,切后是三个字符串

* */

public class CountStringDemo {

    

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

        int count=0;

        int index=0;

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

            str=str.substring(index+key.length());

            System.out.println("str=.."+str);

            count++;

        }

        return count;

    }

    

    public static void main(String[] args) {

        String s="kkddkk";

        System.out.println(getCount_2(s, "kk"));

        System.out.println(Arrays.toString(s.split("kk")));

    }

    

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

        int count=0;

        int index=0;

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

            System.out.println("index=.."+index);

            index=index+key.length();

            count++;

        }

        return count;

    }

    

}

 

/**

* 除字符串空格<br>

* <b>思路:</b><br>

* 通过charAt()来判断所在位置是否是空格,是空格则指针向前或向后一位判断<br>

* 同过substring(start,end)方法来生成指针所在空间内的字符串。

* */

public class MyTrimTest {

 

    public static void main(String[] args) {

        String s=" a bfd ";

        String s1=myTrim(s);

          

        sop(s);

        sop(s1);

    }

    

    private static void sop(String str) {

        System.out.println(str);

    }

    

    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);            

    }

    

}

 

/**

* 将字符串翻转<br>

* <b>思路:</b><br>

* 将字符串变成数组<br>

* 将数组翻转<br>

* 将数组变成字符串<br>

* */

public class ReverseSrting {

 

    public static void main(String[] args) {

        String s="fjadsfgjreog";

        String s1=revStr(s);

        String s2=revStr(s,3,8);//从start到end之间翻转,含头不含尾

        sop(s);

        sop(s1);

        sop(s2);

    }

    

    private static String revStr(String str, int i, int j) {

        char[] arr=str.toCharArray();

        reverse(arr,i,j);

        return new String(arr);

    }

 

    private static void reverse(char[] arr, int i, int j) {

        for (int start = i,end=j-1; start < end; start++,end--) {

            swap(arr,start,end);

        }

    }

 

    private static void sop(String s) {

        System.out.println(s);

    }

 

    public static String revStr(String str){

        /*char[] arr=str.toCharArray();

        reverse(arr);

        return new String(arr);    */

        return revStr(str, 0, str.length());

    }

 

    /*private static void reverse(char[] arr) {

        for (int start = 0,end=arr.length-1; start < end; start++,end--) {

            swap(arr,start,end);

        }

    }*/

 

    private static void swap(char[] arr, int start, int end) {

        arr[start]=(char) (arr[start]^arr[end]);

        arr[end]=(char) (arr[start]^arr[end]);

        arr[start]=(char) (arr[start]^arr[end]);

          

          

        /*char temp=arr[start];

        arr[start]=arr[end];

        arr[end]=temp;*/

    }

 

}

String常用方法

标签:

原文地址:http://www.cnblogs.com/BoBoMEe/p/4287238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!