1.==比较的是值;
StringBuffer a=new StringBuffer("1");
StringBuffer b=a;
StringBuffer c=new StringBuffer("1");
a==b,的结果为true;
a==c,的结果为false;
b.append("2");
a==b,的结果也为true;
但是对于String(final类型)类型则不尽相同
String d = "123";
String e = d;
d==e,的结果为true;
e=e+"456";
d==e,的结果为false
2.对象与引用
StringBuffer sb =new StringBuffer("123");
sb为引用类型,new StringBuffer("123")为对象
引用在堆栈中,对象在堆中
例子:
public class ObjectRef {
//基本类型的参数传递
public static void testBasicType(int m) {
System.out.println("m=" + m);//m=50
m = 100;
System.out.println("m=" + m);//m=100
}
//参数为对象,不改变引用的值 ??????
public static void add(StringBuffer s) {
s.append("_add"); //操作的是对象
}
//参数为对象,改变引用的值 ?????
public static void changeRef(StringBuffer s) {
s = new StringBuffer("Java");//操作的是引用
}
public static void main(String[] args) {
int i = 50;
testBasicType(i);
System.out.println(i);//i=50
StringBuffer sMain = new StringBuffer("init");
System.out.println("sMain=" + sMain.toString());//sMain=init
add(sMain);
System.out.println("sMain=" + sMain.toString());//sMain=init_add
changeRef(sMain);
System.out.println("sMain=" + sMain.toString());//sMain=init_add
}
}