java基础四-String/StringBuffer/StringBuilder区别

String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。

StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,它的方法是同步的,可以在多线程环境中使用而不会出现数据竞争和不一致的问题。因为方法是同步的,所以在多线程环境中使用StringBuffer会带来一些性能上的损失。

而StringBuilder 是非线程安全的,它的方法没有进行同步,不适合在多线程环境中使用。但是由于不需要进行同步,StringBuilder在单线程环境下性能比StringBuffer更好。

String常用方法:

    /**
     * indexOf():返回指定字符的索引。
     *         charAt():返回指定索引处的字符。
     *         replace():字符串替换。
     *         trim():去除字符串两端空白。
     *         split():分割字符串,返回一个分割后的字符串数组。
     *         getBytes():返回字符串的 byte 类型数组。
     *         length():返回字符串长度。
     *         toLowerCase():将字符串转成小写字母。
     *         toUpperCase():将字符串转成大写字符。
     *         substring():截取字符串。
     *         equals():字符串比较。
     *         (); 字符串转换为char数组
     *         contains(); 字符串是否包含指定的字符序列
     */
    @Test
    void testStringMethod(){
        String str = " abdcdeeFQ111rta ";
        System.out.println("返回r的索引=" + str.indexOf('r'));
        System.out.println("返回3索引处的字符=" + str.charAt(3));
        str = str.replaceFirst("a","z");

        System.out.println("一个字符串替换为z后=" + str);
        str = str.trim();
        System.out.println("去除字符串两端空白=" + str);
        String[] strings = str.split("ee");
        System.out.println("分割字符串,返回一个分割后的字符串数组=" + strings[0]);
        byte[] bytes = str.getBytes();
        System.out.print("返回字符串的 byte 类型数组:");
        for (byte b:bytes) {
            System.out.print(" " + b);
        }
        System.out.println();
        System.out.println("返回字符串长度="+str.length());
        System.out.println("将字符串转成小写字母=" + str.toLowerCase());
        System.out.println("将字符串转成大写字符=" + str.toUpperCase());
        System.out.println("截取字符串从2到5的字符=" + str.substring(2,5));
        System.out.println("截取字符串从2到结束的字符=" + str.substring(2));
        System.out.println("字符串比较\"aaa\"是否和\"bbb\"相等:" + "aaa".equals("bbb") );
        char[] chars = str.toCharArray();
        System.out.println("字符串转换为char数组");
        System.out.println("字符串是否包含指定的字符序列:" + str.contains("111"));

    }

你可能感兴趣的:(Java基础,java,开发语言)