网站链接: 我爱捣鼓
当前位置: 首页 > web开发 > JAVA

java中的​String、StringBuffer和StringBuilder三者区别

2022/12/3 12:03:46

java中针对字符串的类有很多,其中String、StringBuffer和StringBuilder这三个类我们时常会搞混,不知道什么时候该用其中的哪一个,今天我们就好好说说这三个类的区别。String String是不可变的,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不…

        java中针对字符串的类有很多,其中String、StringBuffer和StringBuilder这三个类我们时常会搞混,不知道什么时候该用其中的哪一个,今天我们就好好说说这三个类的区别。

  • String

        String是不可变的,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。

  • StringBuffer

        StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。StringBuffer对象是一个字符序列可变的字符串,它没有重新生成一个对象,而且在原来的对象中可以连接新的字符串。

  • StringBuilder

        类也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。

  • String、StringBuffer、StringBuilder三者比较

        三者共同之处:都是final类,不允许被继承,主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着,且考虑到防止其中的参数被参数修改影响到其他的应用。

        StringBuffer是线程安全,可以不需要额外的同步用于多线程中;

        StringBuilder是非同步,运行于多线程中就需要使用着单独同步处理,但是速度就比StringBuffer快多了;

        StringBuffer与StringBuilder两者共同之处:可以通过append、indert进行字符串的操作。

        String实现了三个接口:Serializable、Comparable<String>、CarSequence

        StringBuilder只实现了两个接口Serializable、CharSequence,相比之下String的实例可以通过compareTo方法进行比较,其他两个不可以。

  • 运行速度

        执行速度由快到慢:StringBuilder > StringBuffer > String

  • 小结

        (1)如果要操作少量的数据用 String;

        (2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;

        (3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。

        通过以上内容我们知道了java中的String、StringBuffer和StringBuilder三者区别。感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • 为什么放弃JDBC使用MyBatis?

    为什么用MyBatis? 我们作为一个程序员,主要工作归根结底就是和数据打交道。而使用 java 操作数据库的原始方式就是 JDBC。 先看看使用 JDBC 方式是如何操作数据库的:// 1. 加载配置文件Properties pro=new Properties();pro.load(new FileReader("r…

    2022/11/30 13:05:54
  • springboot项目设置session生命周期时间的几种方法?

    java开发的springboot项目设置session生命周期时间的方法有三种,今天我们就来说说这三种方法。一丶修改Tomcat配置web.xml文件 在Tomcat服务器对应conf配置文件夹下的web.xml文件中修改<session-time-out></session-time-out>中的值. Tomcat默…

    2022/11/12 12:35:20
  • 图文教程一步一步教你在​idea中使用svn如何创建分支?

    我们在用idea开发java项目时需要通过svn创建项目分支,这样更高效率的开发新的项目,今天我们就通过图文教程一步一步教你idea中如何创建分支?第一步第二步第三步 通过以上内容我们知道了在idea中使用svn如何创建分支。感谢您访问“我爱捣鼓(www.woaidaogu.com)”…

    2022/11/12 12:23:28
  • java函数中如何返回多个值?

    我们一般在写java函数时只会返回一个值,但有时我们需要在函数中返回多个值应该怎么办呢?使用数组 数组可用于返回基本数据类型和引用数据类型。 例如,下面的getCoordinates方法返回double数组:double[] getCoordinatesDoubleArray() { double[] coordi…

    2022/11/8 22:08:01