String、StringBuffer、StringBuilder的关系

  • String不可修改,StringBuffer、StringBuilder可修改。
  • 在多线程的情况下使用StringBuffer保证数据的同步。
  • 在单线程情况下StringBuffer、StringBuilder都可以用,StringBuilder会快一些。
		/*
        String是不可修改的
        StringBuffer、StringBuilder是可以修改的
        在多线程的情况下使用StringBuffer保证数据的同步。在单线程情况下StringBuffer、StringBuilder都可以用,StringBuilder会快一些。
        如果要创建很多个字符串,不使用String是明智的
            例如下方,完成一样的任务,创建了10001个String实例(开辟内存占用了很多资源),但StringBuffer只有一个实例。
            
         */
        //记录String操作的开始时间
        long stringBefore = System.currentTimeMillis();

        //初始化String
        String string = "1";

        //append循环10000次
        for (int i = 0; i < 10000; i++) {
     
            string = string + i;
        }

        //记录String操作结束的时间
        long stringAfter = System.currentTimeMillis();

        //输出String操作花费的时间
        System.out.println("String花费的时间" + (stringAfter - stringBefore));

        //记录StringBuffer操作开始的时间
        long stringBufferBefore = System.currentTimeMillis();

        //初始化StringBuffer
        StringBuffer stringBuffer = new StringBuffer("1");

        //append循环10000次
        for (int i = 0; i < 10000; i++) {
     
            stringBuffer = stringBuffer.append(i);
        }

        //记录StringBuffer操作结束的时间
        long stringBufferAfter = System.currentTimeMillis();

        //输出StringBuffer操作花费的时间
        System.out.println("StringBuffer花费的时间" + (stringBufferAfter - stringBufferBefore));
        /*
        输出结果
        String花费的时间1002
		StringBuffer花费的时间2
		*/

你可能感兴趣的:(java)