字符串操作--String、Stringbuffer、Stringbuilder。

145 阅读2分钟

对字符串的操作,有三个需要关心的--String、Stringbuffer、Stringbuilder。

三者的区别
String修改值时会新增字符串,是因为被final修饰,StringBuffer、StringBuilder不会。
StringBuilder是线程不安全,StringBuffer线程安全。线程安全的原因是方法用syschronized加锁,同时导致效率低。

String
String有两种创建字符串的方式

1String s1 = "ok";//直接使用String常量值为字符串赋值。这种方式会首先搜索字符串常量池,查找串池中是否有该字符串,如果有则直接使用常量池中的字符串给String对象赋值。如果没有,则在串池中创建该字符串,然后将值赋值String引用。 
2String s2 = new String("ok");// 首先在堆空间中创建对象(String类型),然后String对象的value属性在串池中搜索参数字符串。如果串池中有,则将串池中的字符串地址赋值给String对象的value属性。如果没有则创建字符串,然后将字符串地址赋值给String对象的value属性。

常用方法

        String s1 = "hello world";

        s1.length();// 返回字符串的字符数,包含两端和中间的空格。
        s1.trim();// 去掉字符串两端的空格。
        s1.toUpperCase();// 将转成全大写
        s1.toLowerCase();// 将值转成全小写
        s1.indexOf("@");// 在源串中搜索参数字符串第一次出现的索引。
        s1.indexOf("@",3);// 从源串中第二个参数索引位置开始搜索第一次出现第一个参数的索引。
        s1.lastIndexOf("@");// 从源串中搜索最后一次出现参数字符串的索引位置。
        s1.lastIndexOf("@",2);// 从第二个参数索引位置开始搜索最后一次出现第二个参数的索引位置。
        s1.charAt(1);// 在源串中找到参数索引位置的字符返回,返回类型是char。
        s1.substring(3);// 从参数索引位置开始截取到字符串末尾。
        s1.substring(2,5);// 从第一个参数索引位置开始截取,截取到第二个参数索引位置的前一位。
        s1.equals("");// 比较两个字符串的值是否相等,考虑大小写。
        s1.equalsIgnoreCase("");// 比较两个字符串的值是否相等,忽略大小写。
        s1.replace('a','c');// 使用新字符替换所有的源串中的老字符。
        s1.replaceAll("","");// 使用新字符串,替换所有源串中的老字符串,还可以替换正则统配的字符串。
        s1.split("");// 使用参数字符串或者正则表达式,将原字符串分隔成一个字符串数组。
        s1.contains("love");// 查看s1中是否存在love。

StringBuilder和StringBuffer
两者方法功能一样

        String one = "One";
        StringBuilder stringBuilder = new StringBuilder(one);
        stringBuilder.append(" ").append("World").append(" ");
        stringBuilder.append("One").append(" ").append("Dream");
        one = stringBuilder.toString();
        System.out.println(one);