只学Java的人自然是不会想到什么值和引用的问题的。但是每个从C++过来的人,都会问这个问题。那么Java倒底是传值还是传引用呢?网上众说纷纭,但大多是扯淡。
答案是:
(1) 当参数为 boolean, byte,short, int, long等非Class类型时,以值传递。
【注】String类型是一个例外,它虽然是Class,但却是按值传递的。从这一点上可以说,Java的作者的逻辑有点问题,哪有这么定义语法的。
答案是:
(1) 当参数为 boolean, byte,short, int, long等非Class类型时,以值传递。
【注】String类型是一个例外,它虽然是Class,但却是按值传递的。从这一点上可以说,Java的作者的逻辑有点问题,哪有这么定义语法的。
例如:
void test(int n)
{
n = n + 1;
}
main(String[] args)
{
int num = 10;
test(num); //显然,num的值不会发生改变。
}
(2)当参数为Class类型时,按引用传递。
这是因为,在Java中所有的Class都是引用(指针)而已。
例如:
这是因为,在Java中所有的Class都是引用(指针)而已。
例如:
void test(MyClass m)
{
m.setId(10);
}
main(String[] args)
{
MyClass my =new MyClass();
test(my); //my的内容被改变
}