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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,`char`和`string`是两个不同的数据类型。 1. `char`(字符类型):`char`是C语言中表示单个字符的数据类型。它用来存储ASCII码表中的字符,包括字母、数字、标点符号和特殊字符等。在内存中,`char`类型占据一个字节(8位),可以表示256种不同的字符。例如,`char ch = 'A';`用于声明一个字符变量`ch`并将其初始化为字母'A'。 2. `string`(字符串类型):在C语言中,并没有内置的字符串数据类型。相反,字符串通常用字符数组来表示。一个字符串是一个以空字符(`\0`)结尾的字符数组。可以通过声明一个字符数组来表示字符串,并使用字符串相关的库函数进行操作,如字符串的拷贝、连接、比较等。例如,`char str[] = "Hello, World!";`声明了一个字符数组`str`并将其初始化为字符串"Hello, World!"。 区别: - `char`是一个简单的数据类型,用于存储单个字符;而`string`是一个由字符组成的字符数组,用于表示字符串。 - `char`占据一个字节的内存空间;而`string`的长度取决于字符数组的大小。 - `char`可以直接赋值为一个字符;而`string`需要使用字符数组来表示,需要通过字符串相关的库函数来操作。 - `char`可以进行字符级别的操作,如比较、转换等;而`string`可以进行字符串级别的操作,如拷贝、连接、查找等。 需要注意的是,上述的区别是基于C语言的原生特性。在一些高级语言(如C++、Java、Python)中,通常有更高级的字符串类型,提供了更多的字符串操作和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值