heisetoufa 发表于 2013-2-5 00:50:19

char与String的区别,char与String的性能比较

package test;public class charOrString { public static void main(String[] args) {char a = 55;System.out.println(a += 10);String b = "55" ;System.out.println(b+=10);int c = 55 ;System.out.println(c += 10 ); }} 结果是
A
5510
65
性能比较
package com.bovy.test.perform;/** *//*** 测试向StringBuilder中插入字符和字符串的性能区别。 这个性能区别主要是字符串需要创建类造成的。 * 在设置StringBuilder的容量足够大的情况下,性能有所改善。注意,这个容量只有在第一次容量不足的时候才调整。 ** @author limingjun **/public class PerformTest ...{    /** *//**   * @param args   */    public static void main(String[] args) ...{      PerformTest performTest = new PerformTest();      performTest.testStringBuilder();      performTest.testStringBuilder(10240);      performTest.testStringBuffer();      performTest.testStringBuffer(10240);    }    /** *//**   * 在不设置容量的情况下。消耗的时间: 2828 比 5761,基本类型还是快。   */    public void testStringBuffer() ...{      StringBuffer hql = new StringBuffer();      /** *//**         * 在设置StringBuilder的容量足够大的情况下,性能有所改善。注意,这个容量只有在第一次容量不足的时候才调整。         * StringBuilder hql = new StringBuilder(10240);         *          */      long begin = System.currentTimeMillis();      for (int i = 0; i < 10000; i++) ...{            hql.setLength(0);            for (int j = 0; j < 10000; j++) ...{                hql.append(' ');            }      }      // 这个容量只有在第一次容量不足的时候才调整。      hql = new StringBuffer();      System.out.println(System.currentTimeMillis() - begin);      begin = System.currentTimeMillis();      for (int i = 0; i < 10000; i++) ...{            hql.setLength(0);            for (int j = 0; j < 10000; j++) ...{                hql.append(" ");            }      }      System.out.println(System.currentTimeMillis() - begin);    }    /** *//**   * 在设置StringBuilder的容量足够大的情况下,性能有所改善。注意,这个容量只有在第一次容量不足的时候才调整。 消耗的时间: 1670 比   * 4409,基本类型还是快。   *      * @param capacity   */    public void testStringBuffer(int capacity) ...{      StringBuffer hql = new StringBuffer(capacity);      long begin = System.currentTimeMillis();      for (int i = 0; i < 10000; i++) ...{            hql.setLength(0);            for (int j = 0; j < 10000; j++) ...{                hql.append(' ');            }      }      // 这个容量只有在第一次容量不足的时候才调整。      hql = new StringBuffer(capacity);      System.out.println(System.currentTimeMillis() - begin);      begin = System.currentTimeMillis();      for (int i = 0; i < 10000; i++) ...{            hql.setLength(0);            for (int j = 0; j < 10000; j++) ...{                hql.append(" ");            }      }      System.out.println(System.currentTimeMillis() - begin);    }    /** *//**   * 在不设置容量的情况下。消耗的时间: 1578 比 4559,基本类型还是快。   */    public void testStringBuilder() ...{       StringBuilder hql = new StringBuilder();      /** *//**         * 在设置StringBuilder的容量足够大的情况下,性能有所改善。注意,这个容量只有在第一次容量不足的时候才调整。         * StringBuilder hql = new StringBuilder(10240);         *          */      long begin = System.currentTimeMillis();      for (int i = 0; i < 10000; i++) ...{            hql.setLength(0);            for (int j = 0; j < 10000; j++) ...{                hql.append(' ');            }      }      // 这个容量只有在第一次容量不足的时候才调整。      hql = new StringBuilder();      System.out.println(System.currentTimeMillis() - begin);      begin = System.currentTimeMillis();      for (int i = 0; i < 10000; i++) ...{            hql.setLength(0);            for (int j = 0; j < 10000; j++) ...{                hql.append(" ");            }      }      System.out.println(System.currentTimeMillis() - begin);    }    /** *//**   * 在设置StringBuilder的容量足够大的情况下,性能有所改善。注意,这个容量只有在第一次容量不足的时候才调整。 消耗的时间: 1670 比   * 4409,基本类型还是快。   *      * @param capacity   */    public void testStringBuilder(int capacity) ...{      StringBuilder hql = new StringBuilder(capacity);      long begin = System.currentTimeMillis();      for (int i = 0; i < 10000; i++) ...{            hql.setLength(0);            for (int j = 0; j < 10000; j++) ...{                hql.append(' ');            }      }      // 这个容量只有在第一次容量不足的时候才调整。      hql = new StringBuilder(capacity);      System.out.println(System.currentTimeMillis() - begin);      begin = System.currentTimeMillis();      for (int i = 0; i < 10000; i++) ...{            hql.setLength(0);            for (int j = 0; j < 10000; j++) ...{                hql.append(" ");            }      }      System.out.println(System.currentTimeMillis() - begin);    }} 
黑色头发  http://heisetoufa.iteye.com
页: [1]
查看完整版本: char与String的区别,char与String的性能比较