package chapter5;

public class Example09 {
    private static final int TIMES = 100000;

    public static void main(String[] args) {
        testString();
        testStringBuffer();
        testStringBuilder();
        test();
    }

    // String时间效率
    public static void testString() {
        long start = System.currentTimeMillis();
        String str = "";
        for (int i = 0; i < TIMES; i++) {
            str += "test";
        }
        long end = System.currentTimeMillis();
        System.out.println("String测试耗时：" + (end - start) + "ms");
    }

    // StringBuffer时间效率（线程安全）
    public static void testStringBuffer() {
        long start = System.currentTimeMillis();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < TIMES; i++) {
            sb.append("test");
        }
        long end = System.currentTimeMillis();
        System.out.println("StringBuffer测试耗时：" + (end - start) + "ms");
    }

    // StringBuilder时间效率（非线程安全）
    public static void testStringBuilder() {
        long start = System.currentTimeMillis();
        StringBuilder sb = new StringBuilder("hello");
        for (int i = 0; i < TIMES; i++) {
            sb.append("test");
        }
        long end = System.currentTimeMillis();
        System.out.println("StringBuilder测试耗时：" + (end - start) + "ms");
    }

    public static void test() {
        String s1 = new String("abc");
        String s2 = new String("abc");
        System.out.println(s1.equals(s2));      // 打印结果为true
        StringBuffer sb1 = new StringBuffer("abc");
        StringBuffer sb2 = new StringBuffer("abc");
        System.out.println(sb1.equals(sb2));   // 打印结果为false
        StringBuilder sbr1=new StringBuilder("abc");
        StringBuilder sbr2=new StringBuilder("abc");
        System.out.println(sbr1.equals(sbr2));   // 打印结果为false

    }

}
