天天看點

StringBuffer的常見方法與StringBuffer和String的差別StringBuffer和String的差別StringBuffer 轉 StringString 轉 StringBufferStringBuffer的一些方法

目錄

  • StringBuffer和String的差別
  • StringBuffer 轉 String
  • String 轉 StringBuffer
  • StringBuffer的一些方法
    • StringBuffer的容器初始量與容器後續容量的變化
    • StringBuffer拼接字元串的方法
    • StringBuffer的删除功能
    • StringBuffer的替換和反轉
    • StringBuffer的截取功能

StringBuffer和String的差別

  • 基本資料類型的值傳遞,不改變其值
  • 引用資料類型的值傳遞,改變其值
  • String類雖然是引用資料類型,但是他當作參數傳遞時和基本資料類型是一樣的
private static void demo8() {
		/*
		 * 基本資料類型的值傳遞,不改變其值
		 * 引用資料類型的值傳遞,改變其值
		 * String類雖然是引用資料類型,但是他當作參數傳遞時和基本資料類型是一樣的
		 */
		String s = "123";
		System.out.println(s);	//123
		change(s);				//将String字元串當作參數傳遞給change()方法時,它的值不會改變
		System.out.println(s);	//123
		System.out.println("-------------");
		StringBuffer sbf = new StringBuffer();
		sbf.append("123");		//StringBuffer字元串當作參數傳遞給change()方法時,它的值會發生變化
		System.out.println(sbf); 	//123
		change(sbf);
		System.out.println(sbf);	//123def
	}
	
	public static void change(StringBuffer s) {
		// TODO Auto-generated method stub
		s.append("def");
	}

	public static void change(String s) {
		// TODO Auto-generated method stub
		s += "def";								//值不會發生變化
	}
           

StringBuffer 轉 String

  • new 個對象轉
  • 使用toString()方法轉
  • 使用subString()方法轉
private static void demo6() {
		/*
		 * StringBuffer 轉  String
		 */
		StringBuffer sbf = new StringBuffer("abc");	
		String s1 = new String(sbf);
		System.out.println(s1);
		
		String s2 = sbf.toString();
		System.out.println(s2);
		
		String s3 = sbf.substring(0,sbf.length());
		System.out.println(s3);
	}
           

String 轉 StringBuffer

  • new 一個對象轉
  • append()方法轉,是StringBuffer特有的方法
private static void demo7() {
		/*
		 * String 轉  StringBuffer
		 */
		String s = "abc";
		StringBuffer sbf = new StringBuffer(s);
		System.out.println(sbf);
		
		StringBuffer sbf2 = new StringBuffer(s);
		sbf2.append("abc");
		System.out.println(sbf2);
	}
           

StringBuffer的一些方法

StringBuffer的容器初始量與容器後續容量的變化

  • 預設大小為16
  • 可以修改大小
  • 參數為字元串,大小為字元串長度加上容器大小
private static void demo1() {
		/*
		 * StringBuffer的容器初始量與容器後續容量的變化
		 */
		StringBuffer sbf = new StringBuffer();
		StringBuffer sbf2 = new StringBuffer(20);
		StringBuffer sbf3 = new StringBuffer("ajgoag");
		System.out.println(sbf.length());					//0
		System.out.println(sbf.capacity());					//16	預設大小為16
		System.out.println(sbf2.capacity());				//20	修改為20
		System.out.println(sbf3.length());					//6
		System.out.println(sbf3.capacity());				//22        字元串長度加上容器大小
	}
           

StringBuffer拼接字元串的方法

  • append()方法,拼接字元串
  • insert()方法,插入字元串
private static void demo2() {
		/*
		 * StringBuffer拼接字元串的方法
		 */
		StringBuffer sbf = new StringBuffer("abc");
		sbf.append("def");				//字元串拼接
		System.out.println(sbf);		//重寫了toString()方法,不然是一個位址值		abcdef
		sbf.insert(2, "123");			//插入字元串		ab123cdef
		System.out.println(sbf);		//ab123cdef
	}
           

StringBuffer的删除功能

  • deleteCharAt(),删除指定索引的單個字元串
  • delete(int a, int b), 删除指定索引到指定索引的字元串
private static void demo3() {
		/*
		 * StringBuffer的删除功能
		 */
		StringBuffer sbf = new StringBuffer("abcdef");
		sbf.deleteCharAt(1);			//删除指定索引的字元
		System.out.println(sbf);		//acdef
		sbf.delete(2, 5);				//删除指定索引到指定索引位置的字元串
		System.out.println(sbf);		//ac
	}
           

StringBuffer的替換和反轉

  • replace(1, 5, “1234”),替換指定索引到指定索引的字元串
  • reverse(),使字元串反轉
private static void demo4() {
		/*
		 * StringBuffer的替換和反轉
		 */
		StringBuffer sbf = new StringBuffer("abcdef");
		sbf.replace(1, 5, "1234");		//将制定索引的字元串替換為自己指定的
		System.out.println(sbf);		//a1234f
		sbf.reverse();					//字元串反轉的方法
		System.out.println(sbf);		//f4321a
	}
           

StringBuffer的截取功能

  • substring(),截取字元串
private static void demo5() {
		/*
		 * StringBuffer的截取功能
		 */
		StringBuffer sbf = new StringBuffer("abcdef");
		String s1 = sbf.substring(1);		//substring()方法有傳回值  截取指定索引後的字元串
		System.out.println(s1);				//bcdef
		String s2 = sbf.substring(1, 3);	//截取指定索引到指定索引的字元串
		System.out.println(s2);				//bc
	}
           

繼續閱讀