欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-09 15:21:25
...
天青色等烟雨,而我在等您。对于您的到来,我在此表示热烈地欢迎!

说到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);
	}
	
}

结果显示:
Java第二十八篇:String类与StringBuffer类的区别
过程分析:在类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类创建的字符串对象可以更改吗

有疑问欢迎留言!

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

相关标签: Java