单个字节存储速度在15--20ns之间
单个存储单元越 大(小) ,存储速度越 快 (慢),但单个空间中 浪费越严重(使用越充分)
内存和 磁盘 4kb一个存储单元(页) ,但磁盘可划分
任何一个变量至少消耗4kb
(数组 在一个存储单元之内
ascll编码 几个字节几个字节空间)
long start = System.currentTimeMillis(); //获取开始时间
String a=" ";
for(int i=0;i<1000;i++){
a+=i;
}
long end = System.currentTimeMillis(); //获取结束时间
System.out.println("程序运行时间:" + (end - start) + "ms");
仅用String 定义a时 这样循环一千次 在3ms到4ms 这样看不出快慢还
当 循环一万次 时间在220ms到260ms左右
当 循环十万次时间花费有这么多
不够好!可以用Stringbuilder
long start= System.currentTimeMillis(); //获取开始时间
StringBuilder a=new StringBuilder();
for(int i=0;i<100000;i++){
a2.append(i+"");
}
long end= System.currentTimeMillis(); //获取结束时间
System.out.println("程序运行时间:" + (end- start) + "ms");
在十万次循环下耗费时间很少。
还有一个 StringBuffer 内部原理与StringBuilder一样,但是是多线程下的安全版本,因为加锁啦。。比StringBuilder相对慢了一丢丢。
StringBuffer 申请的空间足够大,不用每次循环申请新的地址,但如果超出,会成倍的申请空间
StringBuffer和StringBuilder都是基于字符数组。