Java面试题目

Posted 123lmliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面试题目相关的知识,希望对你有一定的参考价值。

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面试题整理(题目内容非原创)

JAVA面试概念题

Java开发面试题归类( 题目篇)

Java开发面试题目,java中级面试题及答案下载

Java开发面试题目,java中级面试题及答案下载

Java开发面试题目,java中级面试题及答案下载