码迷,mamicode.com
首页 > 编程语言 > 详细

Java面试题目

时间:2019-08-21 21:43:18      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:java类   线程   线程安全   字符   速度   关键字   字符串常量   buffer   字符串操作   

StringBuffer 字符串变量(线程安全)

StringBuilder 字符串变量(非线程安全)

 

首先三者主要输在运行速度和线程安全这两位方面。
string:是一个java类,是一个字符串常量,声明是:public final ,所以final的话是改变不了的。字符串值改变不了,就只能在内存创建一个空间来保存新的字符串。所以一旦遇到复杂的操作,用string是多么低效率的事啊。

StringBuilder和StringBuffer有公共类AbstractStringBuilder(抽象类)。


1、执行速度上比较(快慢):stringbuilder>stringbuffer>string
原因(也就是变量和常量的关系):string为字符串常量,后两个是字符串变量,也就是说string对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。而不进行创建和回收,所以速度要比string快很多。


2、线程安全上比较:stringbuilder是线程不安全的,而stringbuffer是线程安全的。
原因:String:对象定义后,线程安全。
           stringbuffer对象在字符串缓冲区被多个线程使用时,stringbuffer中有很多可以带有synchronize关键字,所以可以保证线程是安全的。
           stringbuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误。
建议:如果要进行操作的是多线程,那就使用stringbuffer,但在单线程的情况下,还是建议使用速度较快的stringbuilder。

 

总结:        String:适用于少量的字符串操作的情况

                  StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

                  StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

Java面试题目

标签:java类   线程   线程安全   字符   速度   关键字   字符串常量   buffer   字符串操作   

原文地址:https://www.cnblogs.com/123lmliang/p/11391263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!