面试题总结——String、StringBuffer和StringBuilder的区别

面试题总结——String、StringBuffer和StringBuilder的区别

前言:

  先说一下String、StringBuffer、StringBuilder的相关概念。

  String对象的内容(对象内存地址所存的内容)是不能改变的,但String引用(变量)是可以改变的,可以让其指向另外一个字符串。(不能修改字符串的内容,但可以修改字符串的引用),具体String对象的"不可变性"可参考:String对象的"不可变性"。

  StringBuffer中的内容可以修改,始终是对同一块内存空间做操作,适用于频繁修改字符串的场景。StringBuffer提供了很多方便的方法,如下:

	// 字符串反转
		StringBuffer sb = new StringBuffer("helloworld");
		System.out.println(sb.reverse());
	// 删除指定范围的数据
		public synchronized StringBuffer delete(int start, int end)
	// 插入数据
		public synchronized StringBuffer insert(int offset, 各种数据类型 b)

  StringBuilder和StringBuffer除了下面第2条的区别,其他功能基本相同,这里就不再赘述了。

1、String与两只sb的关系

  String的内容不可修改,而两只sb可以改内容(append)

  String可以与两只sb相互转换

  ● String变为StringBuffer:利用StringBuffer的构造方法或append()方法
  ● StringBuffer变为String:调用toString()方法。

2、两只sb的关系

  ①StringBuffer采用同步处理,线程安全,效率较低

  ②StringBuilder采用异步处理,线程不安全,效率较高

  ③ 其他方面两个sb的功能是相似的,一般都用StringBuilder(效率高)

3、String与StringBuilder的关系

  String的"+"操作(拼接),底层会将String变为StringBuilder

你可能感兴趣的:(面试题总结)