温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Parameter参数如何传递

发布时间:2026-10-04 08:06:29 来源:亿速云 阅读:100 作者:小樊 栏目:编程语言

在 Java 中,参数传递方式只有一种:按值传递(Pass by Value)。这也是初学者最容易混淆的地方。下面从原理、常见类型和示例来解释。


一、核心结论

Java 中无论是基本类型还是对象引用,都是“值传递”

  • 基本类型:传递的是值的副本
  • 引用类型:传递的是引用的副本(地址值的拷贝)

二、基本类型参数(int、double、char 等)

public static void change(int x) {
    x = 10;
}

public static void main(String[] args) {
    int a = 5;
    change(a);
    System.out.println(a); // 输出 5
}

原因

  • a 的值是 5
  • 调用 change(a) 时,把 5 的副本传给 x
  • 方法内修改的是 x,不影响 a

✅ 基本类型:形参改变不影响实参


三、引用类型参数(对象、数组)

class Person {
    int age;
}

public static void change(Person p) {
    p.age = 20;
}

public static void main(String[] args) {
    Person person = new Person();
    person.age = 10;
    change(person);
    System.out.println(person.age); // 输出 20
}

原因

  • person 存的是对象地址
  • 传参时,把地址的副本传给 p
  • p 和 person 指向同一个对象
  • 通过 p 修改对象内容,会影响原对象

✅ 引用类型:修改对象内容会影响原对象


四、引用类型但“重新赋值”不会生效

public static void change(Person p) {
    p = new Person(); // 只改变 p 的指向
    p.age = 30;
}

public static void main(String[] args) {
    Person person = new Person();
    person.age = 10;
    change(person);
    System.out.println(person.age); // 输出 10
}

原因

  • p = new Person() 只是让 p 指向新对象
  • person 仍然指向原对象
  • 方法结束,p 消失

❌ 重新赋值引用不影响原引用


五、数组示例

public static void modify(int[] arr) {
    arr[0] = 100;
}

public static void main(String[] args) {
    int[] a = {1, 2, 3};
    modify(a);
    System.out.println(a[0]); // 输出 100
}

✅ 数组也是引用类型,规则相同


六、总结对照表

参数类型 传递内容 方法内修改是否影响外部
基本类型 值副本 ❌ 不影响
引用类型 引用副本 ✅ 改对象内容会影响
引用类型 引用副本 ❌ 重新指向新对象不影响

七、一句话记忆

Java 只有值传递:基本类型传值,引用类型传“地址的值”

如果你愿意,我也可以结合 面试常问点 或 画图说明内存模型 来进一步解释。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手