基本数据类型传递内容,引用数据类型传递地址。
package 参数传值;
/**
* @BelongsProject: untitled
* @BelongsPackage: 参数传值
* @Author: mcc
* @CreateTime: 2020-09-23 07:42
* @Description:
*/
public class Tester {
public static void main(String[] args) {
Integer var1 = new Integer(1);
Integer var2 = var1;
doSomething(var2);
System.out.println(var1.intValue());//1
System.out.println(var1 == var2);//true
}
public static void doSomething(Integer integer) {
integer = new Integer(2);
}
}
例:
package 参数传值;
/**
* @BelongsProject: untitled
* @BelongsPackage: 参数传值
* @Author: mcc
* @CreateTime: 2020-10-15 07:38
* @Description:
*/
public class SendValue {
public String str = "6";
public static void main(String[] args) {
SendValue sv = new SendValue();
sv.change(sv.str);
System.out.println(sv.str);//6
}
public void change(String str) {
str = "10";
}
}
public void change(String str) {
str = "10";
}
当调用change方法时,就将成员变量str的地址传递给了局部变量参数str,这时两者指向同一内存空间;由于局部变量参数str与成员变量重名,当没有指定时,按照就近原则,此处给str赋值相当于给局部变量形参的str赋值,且根据字符串的不可变性,创建了新的字符串对象“10”,此时成员变量str与局部形参str指向不同内存空间,所以原字符串未被修改。