package test;
/**
* 测试值传递,引用传递
* @author Administrator
*
*/
public class Demo {
public void test(int num){
num++;
System.out.println(num);
}
public void test2(EntityDemo ed){
ed.setName("scott");
}
public void test3(String[] str){
str[0]="改变了";
}
public static void main(String[] args) {
int num=1;
String[] str={"原字符串"};
Demo demo=new Demo();
EntityDemo ed=new EntityDemo();
ed.setAge(18);
ed.setName("jrd");
//===============测试==================================
demo.test(num);
demo.test2(ed);
demo.test3(str);
System.out.println(num);//输出结果为原来数字1,结果不改变
System.err.println(ed.getName());//输出结果为scott,结果改变
System.out.println(str[0]);//输出'改变了',结果改变
}
}
上面一共写了三个测试方法,
1.第一个测试的一个普通的int类型的值传递,经过输出以后发现原本的num变量并没有改变,说明在Java中值传递过后,大家各回各家,各找各妈,再无关联
2.第二个测试的是一个实体类对象,经过输出发现下面对象ed的name属性同样发生了改变,证明引用传递前后两个ed指向的同一个内存地址,对其中一个改变另一个也会改变.
3.第三个是一个数组,同第二个一样,数值同样一起发生了变化.
总结:
值传递,=号过后老死不相往来
引用传递,有福同享有难同当,要变大家一起变.
注:String 字符串属于特殊类型.