Java 值传递和引用传递

不管 Java 参数的类型是什么,一律传递参数的副本。
Java 是值传递语言,传入的是引用副本。
在 Java 中,变量分为以下两类:
① 对于基本数据类型变量(int、long、double、float、byte、boolean、char),Java 是传值的副本。
② 对于一切对象型变量,Java 都是传引用的副本。其实传引用副本的实质就是复制指向地址的指针,

注意的是:String类型也是对象型变量,所以它必然是传引用副本。String类是final类型的,因此不可以继承和修改这个类。

1
2
3
4
class Student {
public int age;
public String name;
}
1
2
3
4
5
6
7
8
9
10
11
public void exchange(Student first, Student second) {
first.age = 16;
first.name = "Jack";

Student temp = first;
first = second;
scond = temp;

System.out.println(arg1.x + ", y: " + arg1.y);
System.out.println(arg2.x + ", y: " + arg2.y);
}
1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
Point p1 = new Point(2, 3);
Point p2 = new Point(2, 3);
System.out.println("p1 x: " + p1.x + ", y: " + p1.y);
System.out.println("p2 x: " + p2.x + ", y: " + p2.y);

tricky(p1, p2);

System.out.println("p1 x: " + p1.x + ", y: " + p1.y);
System.out.println("p2 x: " + p2.x + ", y: " + p2.y);
}
显示 Gitment 评论