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

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

说到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类创建的字符串对象可以更改吗

有疑问欢迎留言!

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

发布了50 篇原创文章 · 获赞 208 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/H_W_1212/article/details/104229824