六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 44|回复: 0

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

[复制链接]

升级  61.3%

726

主题

726

主题

726

主题

探花

Rank: 6Rank: 6

积分
2226
 楼主| 发表于 2013-1-27 05:13:21 | 显示全部楼层 |阅读模式
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
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表