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得到的是一個返回的新的字符串


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章