在 Java 里,“参数”通常分几种常见场景:方法参数、主方法参数(命令行参数)、构造方法参数、以及方法内部传递对象/基本类型时的行为。下面我按最常见的用法给你系统讲一下,并配上示例。
public class Test {
public static void main(String[] args) {
int a = 10;
change(a);
System.out.println(a); // 输出 10
}
static void change(int x) {
x = 20;
}
}
✅ 结论:
基本类型(int、double、boolean 等)是 值传递,方法内部修改不会影响原来的值。
class Person {
int age;
}
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.age = 10;
change(p);
System.out.println(p.age); // 输出 20
}
static void change(Person p) {
p.age = 20;
}
}
✅ 结论:
引用类型(对象、数组、集合)传递的是 对象地址的副本,可以修改对象的内容,但不能让原引用指向新对象。
static void change(Person p) {
p = new Person(); // 只影响局部变量 p
p.age = 30;
}
❌ 这不会影响 main 里的 p。
public static void main(String[] args) {
for (String s : args) {
System.out.println(s);
}
}
运行方式:
java Test hello world 123
输出:
hello
world
123
✅ args 用来接收命令行参数。
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
使用:
Person p = new Person("张三", 18);
static void print(int... nums) {
for (int n : nums) {
System.out.println(n);
}
}
调用方式:
print(1, 2, 3, 4);
print(); // 也可以不传
✅ 本质是一个数组 int[]
| 类型 | 是否影响原值 |
|---|---|
| 基本类型 | ❌ 不影响 |
| 引用类型(改内容) | ✅ 影响 |
| 引用类型(重新赋值) | ❌ 不影响 |
✅ Java 只有值传递
❌ 想通过方法交换两个 int:
static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
❌ 这是做不到的(因为不是引用)。
✅ 可以用数组或对象:
static void swap(int[] arr) {
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
如果你愿意,我可以:
你现在是在学 Java 基础,还是准备面试?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。