1. 描述: String类是java中比较常用的类, 表示字符串类型

   当拼接大量数据时, String类性能没有StringBuilder和StringBuffer性能高

2. 常用的String语法:

    

import org.junit.Test;

public class StringTest {
    @Test
    public void testString() {
        String s1 = new String("AA");
        System.out.println(s1); // AA

        String s2 = "AA";
        System.out.println(s2); // AA
        // 获取字符串某个索引位置的字符
        char c = "abcd".charAt(2);
        System.out.println(c); // c

        // 拼接字符串
        String s3 = "abc".concat("123");
        String s4 = "abc" + 123;
        String s5 = String.format("%s啊啊撒%d", "abc", 123);
        System.out.println(s3); // abc123
        System.out.println(s4); // abc123
        System.out.println(s5); // abc啊啊撒123

        // 判断字符串是否包含指定的字符
        boolean b1 = "azxc".contains("x");
        boolean b2 = "azxc".contains("s");
        System.out.println(b1 + "-----" + b2); // true-----false
        // 判断字符串是否 以...结尾
        boolean b3 = "azxc".endsWith("xc");
        System.out.println(b3); // true
        // 判断字符串是否相等
        boolean b4 = "az".equals("az");
        boolean b5 = "az".equals("aZ");
        System.out.println(b4 + "----" + b5); // true-----false

        // 判断字符串是否相等(忽略大小写)
        boolean b6 = "ac".equalsIgnoreCase("Ac");
        System.out.println(b6); // true
        // 获取字符串长度
        int length = "abc".length();
        System.out.println(length); // 3
        // 正则匹配
        String regex = "\\d+";
        boolean b7 = "123".matches(regex);
        System.out.println(b7); // true

        String regex1 = "[a-zA-Z]+";
        boolean b8 = "aaBFc".matches(regex1);
        System.out.println(b8); // true
        String regex2 = "^a.*";
        boolean b = "aabFdx".matches(regex2);
        System.out.println(b); // true
        String regex3 = "^a.*d$";
        boolean b9 = "aabFda".matches(regex3);
        System.out.println(b9); // false

        // 字符串替换
        String s = "aabxdsca".replace('a', '2');
        System.out.println(s); // 22bxdsc2
        // 将字符串以...分割成字符串数组
        String regex4 = "\\d+";
        String[] strArr = "aa12bbyb34asd".split(regex4);
        for (String s6 : strArr) {
            System.out.println(s6);
            /**
             * aa
             * bbyb
             * asd
             */
        }
        // 以...开头
        boolean b10 = "cmfdsaaa".startsWith("cm");
        System.out.println(b10); // true
        // 从指定位置截取到字符串末尾
        String s6 = "abcdefg".substring(2);
        System.out.println(s6); // cdefg

        // 字符串从指定的开始位置截取到指定的结束位置
        String s7 = "asdffgeaszx".substring(2, 6);
        System.out.println(s7); // dffg
        // 将字符串转换成小写
        String s8 = "ACDdsx".toLowerCase();
        // 将字符串转换成大写
        String s9 = "ACDdsx".toUpperCase();
        System.out.println(s8); // acddsx
        System.out.println(s9); // ACDDSX
        // 将字符串两端的空格去掉,中间的空格不会去掉
        String s10 = "    dud  sda  sad  ".trim();
        System.out.println(s10); // dud  sda  sad
        // 将int类型转换成字符串
        String s11 = String.valueOf(1024);
        System.out.println(s11); // 1024
    }

    /**
     * StringBuilder 拼接字符串速度最快, 线程不安全,因为底层方法没有用synchronized修饰
     */
    @Test
    public void testStringBuilder() {
        StringBuilder sb = new StringBuilder();
        sb.append("aa").append("vss").append(13).append("adsa").append("dfsfd").toString();
        String s = sb.toString();
        System.out.println(s); // aavss13adsadfsfd
    }

    /**
     * StringBuffer 拼接字符串速度比较快, 线程安全, 底层方法都是用synchronized修饰
   * , 用synchronized修饰表示线程安全,但是速度没那么快
*/ @Test public void testStringBuffer() { StringBuffer sb = new StringBuffer(); sb.append("aa").append("asdas").append(123).toString(); String s = sb.toString(); System.out.println(s); // aaasdas123 } }
01-14 13:50