package test;
import org.junit.Test;
public class ObjectAndValue {
@Test
public void test1(){
//變量傳遞指派時,是傳遞的值的對應位址,而不是變量的位址
String s1 = "aa";
String s2 = "bb";
s2 = s1;
System.out.println("s1:"+s1);
System.out.println("s2:"+s2);
s1="cc";
System.out.println("s1:"+s1);
System.out.println("s2:"+s2);
System.out.println("這是因為變量傳遞指派時,是傳遞的值的對應位址,而不是變量的位址");
//對象(或者引用)傳遞指派時,實際傳遞的是這個對象的存儲位址
StringBuffer sb1 = new StringBuffer();
sb1.append("aaa");
StringBuffer sb2 = new StringBuffer();
sb2.append("bbb");
sb2 = sb1;
System.out.println("s1:"+sb1);
System.out.println("s2:"+sb2);
sb1.append("ccc");
System.out.println("s1:"+sb1);
System.out.println("s2:"+sb2);
System.out.println("這是因為對象(或者引用)傳遞指派時,實際傳遞的是這個對象的存儲位址");
}
int i = 1;
public static double ddddd = 50.0;
String s = "ceshi";
StringBuffer sb = new StringBuffer("test");
public void testvalue(int i,String s,StringBuffer sb ,double ddddd){
i = 20;
ddddd = 66.6;
s = "ts";
sb.append("ts");
}
public void testvalue2(){
sb = new StringBuffer("ttttttt");
sb.append("ts");
}
@Test
public void test2(){
System.out.println(i);
System.out.println(ddddd);
System.out.println(s.hashCode());
System.out.println(s);
System.out.println(sb.hashCode());
System.out.println(sb);
this.testvalue(i,s,sb,ddddd);
System.out.println("---testvalue----");
System.out.println(i);
System.out.println(ddddd);
System.out.println(s.hashCode());
System.out.println(s);
System.out.println(sb.hashCode());
System.out.println(sb);
this.testvalue2();
System.out.println("---testvalue2----");
System.out.println(sb.hashCode());
System.out.print(sb);
}
}