java基础类库(九)_1StringBuffer类

知识点

  1. StringBuffer类的主要特点。
  2. StringBuffer、StringBuilder、String的区别。

具体内容:

回顾:String类的特点

  1. String类对象两种实例化方式:

            直接赋值:只开辟一块堆内存空间,可以自动入池。

            构造方法:开辟两块堆内存空间,不会自动入池,使用inter()手工入池。 

     2.  任何一个字符串都是String类的匿名对象。

     3.字符串一旦声明则不可改变,可以改变的只是String类对象的引用。

     4.不可以改变是一个大问题,为此在java里面提供了另外一个类——StringBuffer类(里面的内容可以修改)。       

String类对象可以使用”+“进行字符串的连续操作,但是在StringBuffer类里面必须使用append()方法进行追加。        

  • 方法:public StringBuffer append(数据类型,变量)

范例:观察StringBuffer基本使用

package 算法;

public class TestDemo {
	public static void main(String args[]){
		//与String可以直接赋值不同,必须进行对象实例化
		StringBuffer buf = new StringBuffer(); 
		buf.append("hello").append("world").append("!!");
		change(buf);
		System.out.println(buf);
	}
	public static void change(StringBuffer temp){
		temp.append("\n").append("Hello MLDN.");
	}

}

发现StringBuffer类的内容是可以进行修改的,而String的内容是不可以修改的。

清楚了StringBuffer类的基本使用与操作之后,继续观察两个类之间的区别.

String类StringBuffer类

发现String与StringBuffer都是charSequence接口的子类。而在以后的开发中,如果看到某些方法的操作上出现的是CharSequemce接口,那么应该立刻清楚只需要传递字符串即可。

package 算法;

public class TestDemo {
	public static void main(String args[]){
		CharSequence seq = "hello";    //向上转型
		System.out.println(seq);     //String类复写toString()
	}
	

}

    虽然String和StringBuffer类有着共同的接口,但是这两个类之间如果要转换,不能够直接转换。

1.将String与StringBuffer类对象?

方式一:利用StringBuffer类的构造方法(public StringBuffer(String str))

package 算法;

public class TestDemo {
	public static void main(String args[]){
		StringBuffer buf = new StringBuffer("hello");
		//将String变为StringBuffer
		System.out.println(buf);     //String类复写toString()
	}
}

方式二:利用append()方法(public StringBuffer append(String str))

package 算法;

public class TestDemo {
	public static void main(String args[]){
		StringBuffer buf = new StringBuffer();
		buf.append("hello");
		//将String变为StringBuffer
		System.out.println(buf);     //String类复写toString()
	}
}

2.将StringBuffer类变为String类

  利用toString()方法可以将StringBuffer转化为String。

package 算法;

public class TestDemo {
	public static void main(String args[]){
		StringBuffer buf = new StringBuffer("hello");
		String str = buf.toString();
		System.out.println(str);     //String类复写toString()
	}
}

  也可以利用String类的构造方法(public String (StringBuffer buffer))实现StringBuffer()。

在String类里面也提供一个和StringBuffer比较的方法:public boolean contentEquals(StringBuffer sb)

package 算法;

public class TestDemo {
	public static void main(String args[]){
		StringBuffer buf = new StringBuffer("hello");	
		System.out.println("hello".contentEquals(buf));    
	}
}

Sring与StingBuffer类都定义了很多方法,而且很多方法刚好互补。

1.字符串反转:public StringBuffer reverse()

package 算法;

public class TestDemo {
	public static void main(String args[]){
		StringBuffer buf = new StringBuffer("hello");	
		System.out.println(buf.reverse());    
	}
}

2.在指定的位置增加数据:public StringBuffer insert(int offset,数据类型 变量 )

package 算法;

public class TestDemo {
	public static void main(String args[]){
		StringBuffer buf = new StringBuffer("hello");
		buf.insert(0,"MLDN").insert(0, "你好!");
		System.out.println(buf);    
	}
}

3.删除部分数据:public StringBuffer delete(int start,int end)

package 算法;

public class TestDemo {
	public static void main(String args[]){
		StringBuffer buf = new StringBuffer("hello world!");	
		System.out.println(buf.delete(5, 10));    
	}
}

   从JDK1.5之后增加了一个新的字符串操作类:StringBuffer类,这个类的定义结构如下:

发现StringBuffer类与StringBuilder类在定义上非常的相似,几乎连方法也一样。

面试题:请解释String、StringBuffer、StringBuilder的区别?

1.String的内容一旦声明则不可改变,StringBuffer与StringBuilder的内容可以改变。

2.StringBuffer类中提供的方法都是同步方法,属于安全的线程操作,StringBuilder都属于异步方法属于非线程安全的操作。

  以后在开发中见到字符串基本使用String。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值