StringBuffer类、StringBuilder类和String类

由于String对象不能更改,只能新建那么将会开辟新的内存,因此在字符串连接的时候,将会生成很多的字符串,效率不高,StringBuffer和StringBuilder会更好(连接的字符串不会生成新的字符串,而是进行原地的修改)

StringBuffer是多线程安全的,而StringBuilder不会但是速度会快一点,但是为了保险起见用StringBuffer

用StringBuffer构造对象,初始容量可以容纳16个字符,当长度大于16时,实体容量自动增加(n+1)*2

StringBuffer

@Test
	public void Demo5(){
		String str="java";
		StringBuffer sb=new StringBuffer("java");//StringBuffer是一个类所以需要new
		//连接字符串的区别
		str=str+"abc"+"123";
		sb.append("abc").append("123");
		System.out.println(sb.capacity());//容量
		sb.insert(5,"xyz");
		System.out.println(sb.toString());//从5之后插入xyz
	}

StringBuilder

	public void demo6(){
			StringBuilder sb=new StringBuilder("java");
			sb.append("lllllaaaa");
			sb.replace(1,3, "xyz");//替换
	    	System.out.println(sb);//jxyzalllllaaaa
	    	//String
	    	String str="java";
	    	str=str.replace("av", "xyz");//非原地修改
	    	System.out.println(str);
	}

注意:StirngBuffer和StringBuilder都是原地修改

            而String得到的是一个返回的新的字符串


猜你喜欢

转载自blog.csdn.net/e286878553/article/details/80685090