理解 Java 的参数(方法参数),核心要分清:参数是怎么传的、基本类型和引用类型的区别、值传递的本质。下面用通俗 + 示例讲清楚。
这是最重要的一点:
Java 中,方法参数传递永远是“值传递”(pass by value)
也就是说:
public static void change(int x) {
x = 100;
}
public static void main(String[] args) {
int a = 10;
change(a);
System.out.println(a); // 10
}
a = 10change(a) 时,复制 a 的值 10x,和 a 没关系a 不变✅ 基本类型:传的是“数值的副本”
class Person {
int age;
}
public static void grow(Person p) {
p.age = 20;
}
public static void main(String[] args) {
Person person = new Person();
person.age = 10;
grow(person);
System.out.println(person.age); // 20
}
person 存的是对象地址grow(person) 时,复制的是地址值p 和 person 指向同一个对象p 改对象内容,person 也能看到✅ 引用类型:传的是“地址值的副本”
public static void swap(Person a, Person b) {
Person temp = a;
a = b;
b = temp;
}
public static void main(String[] args) {
Person x = new Person();
Person y = new Person();
swap(x, y);
// x 和 y 没有交换
}
a、b 只是 地址副本x、y 不受影响✅ 引用的“重新指向”不会影响外面的变量
public static void change(int[] arr) {
arr[0] = 99;
}
public static void main(String[] args) {
int[] a = {1, 2, 3};
change(a);
System.out.println(a[0]); // 99
}
数组变量存的是地址,规则同对象。
如果你愿意,我也可以用 画图方式、面试常问题 或 和 C/C++ 对比 再讲一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。