Java第二十八篇:String类与StringBuffer类的区别

本文通过实例对比分析了Java中String与StringBuffer类的特性。String类创建的字符串对象不可更改,而StringBuffer类则支持字符串的修改操作。通过具体代码演示了两者在方法调用前后的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

天青色等烟雨,而我在等您。对于您的到来,我在此表示热烈地欢迎!

说到String类和StringBuffer类,想必你首先想到的就是字符串吧。平时在代码模块中,我们经常在用字符串,但有的时候会忘了二者之间的区别,一起来回顾或学习吧:

简单的Demo

//例子比较简单,这儿没写注释,若有疑问,欢迎在下方留言!
public class Study{
	public static void main(String args[ ]) {      
		Study1 study1 = new Study1();  //创建引用对象study1
		study1.fun();   //调用fun()方法
		Study2 study2 = new Study2();  //创建引用对象study2
		study2.fun();   //调用fun()方法
	}
}
class Study1{
	public void fun() {
		StringBuffer w1= new StringBuffer("333");
		StringBuffer w2=new StringBuffer("444");
		operate(w1,w2);
		System.out.println("w1="+w1+"  w2="+w2);
		System.out.println("-----------------");
	}
	public void operate(StringBuffer a,StringBuffer b) {
		a.append(b);
		b=a;      //变量之间在进行赋值
		System.out.println("a="+a+"   b="+b);
	}
}
class Study2{
	public void fun() {
		String h = new String("111");
		System.out.println("调用前的h="+h);
		fun1(h);
		System.out.println("调用后的h="+h);
	}
	public void fun1(String h) {
		h="222";
		System.out.println("h="+h);
	}
	
}

结果显示:
在这里插入图片描述
过程分析:在类Study1中,调用operate方法的时候传递了两个参数:a和b。其中a,b最初都指向w1,w2引用中所指的对象,在经过append()方法后,对w1所指向的对象做了更改,而a=b只是变量在进行赋值,并没有对w2所指对象作出更改,所以w2的值还是444,没有发生变化,而w1的值因所指对象发生了变化,故值受到影响,这也说明了StringBuffer类可以对字符串进行存储及操作;
在类Study2中,调用fun1()方法,传过来的参数指向了新的字符串对象"222",但调用后的h的值却没有发生改变,这说明了String类只能对字符串进行存储和处理,不能够改变String类创建的字符串对象。这也印证了这篇博文:Java答疑第四篇:String类创建的字符串对象可以更改吗

有疑问欢迎留言!

点个赞,加个关注呗!嘿嘿!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值