- Java的引用实际上是对指针的一个封装。
- C++的引用是变量的一个别名。
- Java的定义出来的变量(除了基本类型)其实就是一个引用,指向真正的对象。
- C++可以通过将引用传入函数,在函数内修改所引用的对象,而Java不能。
- Java是值传递,对于函数参数是直接copy一份(基本类型是数值,引用类型是引用的副本,指向同一个对象)。
- Java不能将类对象作为参数,在函数内修改其信息,但是因为指向的是同一个对象,所以我们可以修改所指向的对象的信息。
class Value{
int val;
}
public class ReferenceTest {
public static void funA(int v){
v+=5;
}
public static void funB(Integer v){
v+=5;
}
public static void funC(Value v){
v.val+=5;
}
public static void main(String[] args) {
int v=5;
funA(v);
System.out.println(v);
funB(v);
System.out.println(v);
Value vv=new Value();
vv.val=v;
funC(vv);
System.out.println(vv.val);
}
}