Java知识点--String,StringBuffer,StringBuilder

Java知识点–String,StringBuffer,StringBuilder

  • 区别:

String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改串,直至这个对象被销毁。
StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append(),insert(),reverse(),setCharAt(),setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象
StringBuilder类是JDK1.5新增的类,他也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本类似,两个类的构造器和方法也基本相同。不同的是,StringBuffer是线程安全的,而StringBuilder则没有实现线程的安全功能,所以性能略高。因此在通常情况下,如果需要创建一个内容可变的字符串对象,则应该优先考虑使用StringBuilder类。

  • 提示

String,StringBuffer,StringBuilder都实现了CharSequence接口,因此CharSequence可以认为是一个字符串协议接口

  • jdk9的优化

jdk9之前:采用char数组来保存字符,每个字符占2个字节
jdk9以后:采用byte数组再加一个encoding-flag字段来保存字符,每个字符占1个字节

  • 关于字符串长度
String StringBuilder StringBuffer
length是固定的 length可以改变,通过length(),setLength(int len)修改其字符序列的长度 与StringBuilder相同
没有capacity这个属性 表示StringBuilder的容量,一般比length大,一般不需要关心这个属性 与StringBuilder相似

以StringBuilder为例

public class StringBuilderTest{
	public static void main(String[] args){
		StringBuilder sb=new StringBuilder();
		sb.append("java");
		sb.insert(0,"hello ");
		sb.replace(5,6,",");
		sb.delete(5,6);
		System.out.println(sb);
		sb.reverse();
		System.out.println(sb);
		System.out.println(sb.length());
		System.out.println(sb.capacity());
		sb.setLength(5);
		System.out.println(sb);
	}
}

String,StringBuilder,StringBuffer除了上述的用法,还有丰富的API,因篇幅有限,剩下的需要自行查阅API文档
API文档

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读