黑马程序员_Java基础_String和StringBuffer类

来源:互联网 发布:mac移动硬盘装win7 编辑:程序博客网 时间:2024/05/16 08:07
------- android培训、java培训、期待与您交流! ----------




String类常用API:

 1.获取
 1.1 字符串中的包含的字符数,也就是字符串的长度
 int length():获取长度。
 1.2 根据位子获取位子上某个字符。
 char chatAt(int index):
 1.3 根据字符获取该字符在子串中的位子
 int indexOf(String str):返回的是str在字符串中第一次出现的位子
 int indexOf(String str, int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置
 int lastIndexOf(String str): 从字符串后面位置开始,获取str在字符串中出现的位置


 2.判断
 2.1 字符串中是否包含某一个字符串
 boolean contains(String str):
 特殊之处:indexOf(String str):可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中,
 所以,也可以用于对指定判断是否包含。
 if(str.indexOf("aaa") != -1)
 而且该方法既可以判断,又可以获取出现位置。

 2.2 判断字符串是否有内容
 boolean isEmpty():  原理就相当于判断字符串长度是否为0

 2.3 判断字符串中是否以指定内容开头
 boolean startsWith(str);

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

 2.5 判断字符串内容是否相同
 boolean equals(str);

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

 3.转换
 3.1 将字符数组转换成字符串
 构造函数: String(char[])
 String(cha[], offset,count):  将字符数组中的一部分转成字符串

 静态方法: static String copyValueOf(char[]);
 static String copyValueOf(char[], int offset ,int count)
 static String valueOf(char[])

 3.2 将字符串转成字符数组
 char[] toCharArray();

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

 3.4 将字符串转换层字节数组
 byte[] getBytes()

 3.45 将基本数据类型转化成字符串
 static String valueOf(int)
 static String valueOf(double)

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

 4.替换
 String replace(oldchar ,newchar)  
 将字符串中所有的oldchar替换成newchar   如果没有找到对应的oldchar,返回原来的字符串

 5. 切割(非常实用)
 String[] split(str);

 6.子串
 String substring(begin);
 String substring(begin,end);   *子串中不包含end下标中的字串

 7. 转换、比较、去空格
 7.1 将字符串转换成大小写
 String toUpperCase()    转换成大写
 String toLowerCase()    转换成小写

 7.2去掉字符串两端的空格 
 String trim();

 7.3对两个字符串进行自然顺序的比较
 int compareTo(String)   
 返回值等于零:两个字符串相等 
 小于零: 传入参数大于字符串
 大于零:传入参数小宇字符串

例子1:
//字符串是一个特殊的对象public class StringDemo {public static void main(String[] args) {String s1 = "abc"; // s1是一个类型变量,“abc”是一个对象,一旦被初始化就不可被改变String s2 = new String("abc");String s3 = "abc";// s1和s2的区别// 第一句在内存中只有一个对象// 第二句s2在内存中有两个对象System.out.println(s1 == s2);System.out.println(s1.equals(s2));System.out.println(s1 ==  s3);// 结果:false// true}}

例子2:
public class StringDemo2 {    public static void test7() {        String s = "    Hello  word!     ";        print(s.toUpperCase()); // 转成大写        print(s.toLowerCase()); // 转换小写        print(s.trim()); // 去掉首尾空格        String s1 = "abc";        String s2 = "abb";        print(s1.compareTo(s2)); // 比较两个字符串    }    public static void sub() {        String a = "abcdef";        print(a.substring(2)); // 从指定位置开始到结尾,如果下标不存在,会出现字符串下标越界异常        print(a.substring(2, 4)); // 包含头,不包含尾,    }    public static void split() {        String str = "tomcat,apache,java";        String[] arr = str.split(",");        for (String a : arr)            print(a);    }    public static void replace_1() {        String str = "hello java";        String s1 = str.replace("java", "wrod");        print(s1);    }    public static void change() {        char arr[] = { 'a', 'b', 'c', 'd', 'e' };        String str = new String(arr);        print(str);        char arr2[] = str.toCharArray();        for (int i = 0; i <= arr2.length; i++)            print(arr2[i]);        print(str);    }    /*     * 文件名的判断     */    public static void is() {        String str = "StringDemo.java";        // 判断文件名是否以String开头        print(str.startsWith("String"));        // 判断文件是不是.java格式        print(str.endsWith(".java"));        // 判断文件中时候含有Demo字符串内容        print(str.contains("Demo"));    }    /*     * String的获取方法     */    public static void get() {        String str = "abcdekakf";        // 获取字符串指定下标的字符        print(str.charAt(5)); // 当下标超出字符串的长度时,或抛出StringIndexOutOfBoundsException异常        print(str.length()); // 字符串长度        print(str.indexOf("dek")); // 获取指定字符所在位子的下标 当字符串中没有指定的字符时,输出-1        print(str.indexOf("a", 3)); // 从指定位子3开始进行查找指定字符下标 当字符串中没有指定的字符时,输出-1        print(str.lastIndexOf("a")); // 从字符串的后面进行开始查找指定字符的位子    }    public static void main(String[] args) {        test7();        // split();        // change();        // replace_1();        // is();        // get();    }    // 打印输出方法 使用的哟    public static void print(Object obj) {        System.out.println(obj);    }}

例子3:
 
/*
 * 模拟String中 的strim方法,去掉字符串两边的空格
 */ 
public class MyStrimDemo {    public static void main(String[] args) {        String str = "     hello word    ";        System.out.println(mytrim(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);    }}
 例子4:
/*
 练习:
 1. 翻转字符串
 2. 计算指定字符串出现次数
 3. 获取两个字符串中最大相同子串,
 */
public class DIYString {    public static void main(String[] args) {        // String str = "0123456789";        // print(overturn(str));        // print(overturn(str, 0, 5));        // String str = "abeeeeeeeabkkkkkkkkab";        // print(getSubCount(str, "ab"));        String s1 = "gegeasgHellogege";        String s2 = "aaaaHelloooo";        print(getMaxSub(s2, s1));    }    // 3. 获取两个字符串中最大相同子串    public static String getMaxSub(String s1, String s2) {        String max = "";        String 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, x = min.length() - i; x != min.length() + 1; j++, x++) {                String temp = min.substring(j, x);                if (max.contains(temp))                    return temp;            }        }        return null;    }    // 2.计算指定字符串出现次数 这种方式消耗资源小    public static int getSubCount(String str, String key) {        int index = 0;        int count = 0;        while ((index = str.indexOf(key)) != -1) {            str = str.substring(index + key.length());            count++;        }        return count;    }    // 选择翻转    public static String overturn(String str, int start, int end) {        char[] cha = str.toCharArray();        return new String(reversalArr(cha, start, end));    }    // 全部字符串反转    public static String overturn(String str) {        char[] cha = str.toCharArray();        return String.valueOf(reversalArr(cha, 0, cha.length - 1));    }    // 翻转数组    public static char[] reversalArr(char[] arr, int start, int end) {        for (int i = start, j = end; i <= j; i++, j--) {            char temp = arr[i];            arr[i] = arr[j];            arr[j] = temp;        }        return arr;    }    // 打印    public static void print(Object obj) {        System.out.println(obj);    }}
StringBuffer类常用API:  
 StringBuffer: 是一个容器,是字符串缓冲区,而且长度是可以改变的,可以操作多种数据类型
 StringBuffer 是线程同步的(安全)
 StringBuilder是线程不同步的,但效率高(开发建议使用)
 
 JDK1.5版本之后出现StringBuilder
 升级三个因素:
 提高效率
 简化书写
 提高安全性

 1. 存储
 StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
 StringBuffer insert(index,数据):可以将数据插入到指定index位置

 2. 删除
 StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end.
 StringBuffer deleteCharAt(index):删除指定位置的字符。

 3. 获取
 int indexOf(String str)
 int lastIndexOf(String str)
 int length()
 String sustring(int start ,int end)

 4. 修改
 StringBuffet replace(int start,int end,String str)   替换,不包含end
 void setCharAt(int index, char ch)   只替换指定位子的一个字符

 5.翻转
 StringBuffer reverse(); 

StringBuffer例子1: 
public class StringBufferDemo {    /**     * @param args     */    public static void main(String[] args) {        // add();        // delete();        // update();        reverse();    }    // 翻转测试    public static void reverse() {        StringBuffer buf = new StringBuffer("123456789");        buf.reverse();        print(buf.toString());    }    public static void update() {        StringBuffer buf = new StringBuffer("123456789");        buf.replace(1, 3, "**"); // 替换不包含end位置        print(buf.toString());        buf.setCharAt(8, '0');        print(buf.toString());    }    public static void delete() {        StringBuffer buf = new StringBuffer("123456789");        buf.delete(1, 3); // 当下标超出时,会抛出下标越界异常        print(buf.toString());        buf.deleteCharAt(0); // 删除第一个字符        print(buf.toString());    }    public static void add() {        StringBuffer buffer = new StringBuffer();        buffer.append("gege").append(false).append(123);        print(buffer.toString());        buffer.insert(1, "**");        print(buffer.toString());    }    // 打印    public static void print(Object obj) {        System.out.println(obj);    }}




 


0 0
原创粉丝点击