Stirng,Stringbuffer,Stringbuild的区别浅淡

String 
1,Stirng是对象不是基本数据类型 
2,String是final类,不能被继承。是不可变对象,一旦创建,就不能修改它的值。 
3,对于已经存在的Stirng对象,修改它的值,就是重新创建一个对象,然后将新值赋予这个对象 
StringBuffer 
1,一个类似于 String 的字符串缓冲区,对它的修改的不会像String那样重创建对象。 
2,使用append()方法修改Stringbuffer的值,使用toString()方法转换为字符串。 
Stringbuild 
是jdk1.5后用来替换stringBuffer的一个类,大多数时候可以替换StringBuffer。和StringBuffer的区别在于Stringbuild是一个单线程使用的类,不值执行线程同步所以比StringBuffer的速度快,效率高。是线程非安全的。

使用举例 
String s1 = “hello”; 
s1=“world”; 
这个操作其实是:其实是创建了两个String对象。 
String s2 = "hello" 
s2 += "world"; 
这操作是:先创建一个String对象,在接下来进行字符串连接的时候,有创建了一个StringBuild(jdk1.5前是StringBuffer),然后调用append()方法,最后调用toString()方法。 
有此可以看出String对字符的操作比直接使用Stringbuffer(或者StringBuild)要多出附加的操作,而且String是不可变对象,使用String对字符串操作会产生大量的、多余java对象。所以结果是:影响性能,占用空间。 
程序举例: 
分别使用String和StringBuffer对字符串“0123456789”累加10000次,然后统计耗时多长

String str = "0123456789"; 
        String str2 = ""; 
        int count = 10000; 
        long start = System.currentTimeMillis(); 
        for (int i = 0; i < count; i++) { 
            str2 += str; 
        } 
        long end = System.currentTimeMillis(); 
        long time = (end - start); 
        System.out.println(time); 
运行多次,在我的机器上平均时间约等于3300,即3.3秒,下面用StringBuffer来操作,查看结果 
String str = "0123456789"; 
StringBuffer sb = new StringBuffer(); 
int count = 10000; 
long start = System.currentTimeMillis(); 
for (int i = 0; i < count; i++) { 
sb.append(str); 

String str2 = sb.toString(); 
long end = System.currentTimeMillis(); 
long time = (end - start); 
System.out.println(time); 
同样在我的机器上结果平均结果小于10,即0.01秒,两者相差300多倍,而且随着循环次数的增加这个差距逐渐增大 
结果非常明显了,如果使用StringBuild时间还会再减少,这里就不再测试了。

时间: 2024-10-22 10:20:52

Stirng,Stringbuffer,Stringbuild的区别浅淡的相关文章

浅淡传统企业进入移动互联网的几种方式

浅淡传统企业进入移动互联网的几种方式 2013-07-11 17:22 来源:小马刀blog 1个评论 分享文章 A- A+ 文/小刀马 据有关机构统计,中国移动互联网呈现激增的发展态势,今年年中我国移动互联网用户数达4.6亿左右.除了用户规模快速上升之外,用户的使用强度也在增加.对于同时使用电脑和手机上网的用户而言,移动上网的时间已经达到每天3小时40分钟左右,占到每天平均上网时间的69%.移动互联网俨然已成为信息产业发展最快.竞争最激烈.创新最活跃的领域之一. 说起移动互联网,也就是这两年的

String,StringBuffer,StringBuilder的区别

StringBuffer和StringBuider的区别 StringBuffer是jdk1.0版本的,是线程安全的,效率低 StringBuilder是jdk1.5的,是线程不安全的,效率高 String和StringBuffer,StringBuilder的区别 String是一个不可变的字符序列 StringBuffer,StringBuilder是可变的字符序列

Java杂谈之StringBuffer----兼带String,StringBuffer,StringBuilder的区别

在Java中,用到最多的当属String类型的数据了 而这一点就要涉及String , StringBuffer , StringBuilder这三大类 下面主要来比较一下String和StringBuffer的区别,因为StringBuffer和StringBuilder 太相似,所以就不拿来比较了. 提及一下,StringBuffer和StringBuilder的区别 从安全性来说,StringBuffer更安全,StringBuffer主打线程安全 从执行效率来说,StringBuilde

C#中值类型和引用类型的区别浅记

C#中值类型和引用类型的区别浅记 在C#中,变量的类型分为两种,分别是值类型和引用类型. 值类型的变量直接存储值,说得更具体一些,就是值类型变量在内存中直接存储它们自身的值,如代码所示, int x = 2: 值类型变量x,在内存中的某处直接存储了它自身的值:2. 引用类型的变量存储的是对其对象的引用,更进一步说,就是引用类型变量在内存中直接存储了一个指向它处的引用,而引用所指的对象则保存在引用类型变量所指的内存中.如代码所示, public class Thing { int x; } Thi

浅淡物流app开发解决方案

近年来,随着科技不断升级,以及移动互联网的迅速发展,各行业竞争也同时越来越大.例如物流行业,传统的物流形式已经满足不了大家,在近两年里传统物流行业也是慢慢从PC端互联网中逐渐的迁移到移动互联网.因此物流APP开发就因此而诞生了,这推动物流行业管理发展的同时,更是为广大消费者带来个性化的服务. 传统物流行业介绍 相信大家都清楚,在没有物流APP开发之前,传统的物流交收配送方式需要经过很多个环节.首先要取件,然后运送.再经过快递员配送最后用户签名等多个环节;有时候快递员联系不上用户的时候,就只能存放

String,StringBuilder,StringBuffer三者的区别

参考   String,StringBuilder,StringBuffer三者的区别 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 1.运行速度 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,

浏览器文件上传浅淡

浏览器文件上传浅淡 form 表单的各种格式 在出现 ajax 之前,前端是使用 form 表单进行提交数据的,它的结构大概是这样: <form> <input type="text" name="username"/> <button type="submit">提交</button> </form> 在 form 表单进行提交时,则支持有四种方式(来自:https://develop

String、StringBuffer以及StringBuilder区别

1.概述 String是字符串常量,StringBuffer是线程安全字符串变量,而StringBuilder是非线程安全的字符串变量 2.String与StringBuffer区别 主要区别在于String是不可变的字符串常量类型,而StringBuffer是可变的字符串变量类型.每次对String类型变量进行修改,都会创建一个新的String对象,并且把指针指向新的String对象.而对StringBuffer类型变量进行修改,不会创建一个新的字符串对象,而是直接修改原来的字符串对象的内容.

String、StringBuffer、StringBuild的区别

他们之间的区别主要在两个重大方面 一.处理速度上 StringBuild > StringBuffer > String 原因: String : 它定义为字符串的常量,定以后不能修改 StringBuild 和 StringBuffer : 他们都是字符串的变量,容易修改 二.线程处理安全 StringBuffer : 线程最安全,它里面含有很多的synchronized的关键字 三.总结 String :  处理少量字符时候会使用 StringBuild :  在单线程情况下大量使用字符串