值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。
public class DataTran {
public void getData(String str){
str = "hello";
}
public static void main(String[] args) {
String str = "1234";
System.out.println("引用前:"+str);
new DataTran().getData(str);
System.out.println("引用后:"+str);
}
}
结果:
引用前:1234
引用后:1234
可见main方法的值并没有受getData()方法的影响,这是值传递
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
//数组引用
public class Test001 {
public static void change(String[] ss){
ss[0] = "jing";
}
public static void main(String[] args) {
String[] ss = {"zhang","li","wang","liu"};
System.out.println("引用前:"+ss[0]);
change(ss);
System.out.println("引用后:"+ss[0]);
}
}
结果:
引用前:zhang
引用后:jing
//对象引用
public class ObjectTest {
public String name = "wang";
}
public class ObjectTest {
public static void object(ObjectTest ob){
ob.name = "zhang";
}
public static void main(String[] args) {
ObjectTest ob = new ObjectTest();
System.out.println("引用前:"+ob.name);
object(ob);
System.out.println("引用后:"+ob.name);
}
}
结果:
引用前:wang
引用后:zhang
可见对象引用后数据改变,这个和数组一样是引用传递