基本类型传值
当函数参数是基本类型时,是传值的。
public static void changeValue(int a)
{
a = 10;
}
/*--------------------------------------*/
int a = 5; //基本类型
changeValue(a);
上面代码实参a = 5,将值传给形参a = 5,执行函数后,形参 a = 10,实参的a 不变
对象传递指针
不可变对象String类型
不可变对象 只会改变其指针的指向,而不会修改其值 public static void changeValue(String s1)
{
s1 = "def";
}
/*--------------------------------------*/
String b = "abc"; //不可变对象
System.out.println(b);
执行方法前:
执行之后:
不可变对象传递指针后,修改形参不会影响到实参指针的指向(不会改变其值)
可变对象
public static void changeValue(StringBuffer s1)
{
s1.append("def");
}
/*--------------------------------------*/
StringBuffer c = new StringBuffer("abc"); //可变对象
changeValue(c);
执行方法前:
执行方法之后:
可变对象传递指针后,会修改自己本身的值
public class ArgumentPassing {
public static void changeValue(int a)
{
a = 10;
}
public static void changeValue(String s1)
{
s1 = "def";
}
public static void changeValue(StringBuffer s1)
{
s1.append("def");
}
public static void main(String[] args) {
int a = 5; //基本类型
String b = "abc"; //不可变对象
StringBuffer c = new StringBuffer("abc"); //可变对象
changeValue(a);
changeValue(b);
changeValue(c);
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}