专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

javase参数传递机制(值传递)

java中所有的参数传递都是值传递,也就是说传递的是值的副本,而不是原件,因此,副本的改变不会影响原件。

1、值传递的类型

(1)基本数据类型参数的传递

传递的是值的副本,副本改变不会影响原件

(2)引用类型参数的传递

传递的是值的副本,引用类型指的是对象的地址,因此,副本和原参数指向了同一个地址,改变副本指向地址对象的值,原参数的值也就跟着改变了。

public class Student {
    private String name;
    private Integer age;
    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public void testPara(Student student1){
         student1.name="zhang";
    }

    public static void main(String args[]){
        Student student=new Student("zhai",12);
        student.testPara(student);
        System.out.println(student.name);
    }
}

39_1.png

程序运行产生的结果为zhang,因为,student对象的引用和student1对象的引用指向的是同一个地址,student1将对象的值改变后student对象也发生了改变。

public class Student {
    private String name;
    private Integer age;
    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public void testPara(Student student1){
        student1.name="zhang";
    }

    public void testPara1(Student student2){
        student2=new Student("liu",11);
    }

    public static void main(String args[]){
        Student student=new Student("zhai",12);
        student.testPara(student);
        System.out.println(student.name);

        student.testPara1(student);
        System.out.println(student.name);
    }
}
zhang
zhang

第一步,student和student1对象的引用指向同一个对象:

39_2.png

student1将name属性进行了修改:

39_3.png

第三步,student2和student对象的引用指向同一个对象:

39_4.png

由于testPara1方法内对student2对象的引用创建了新的对象,因此,student2又指向了这个新创建的对象:

39_5.png

2、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

是值传递,Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对象的引用是永远不会改变的。

文章永久链接:https://tech.souyunku.com/22821

未经允许不得转载:搜云库技术团队 » javase参数传递机制(值传递)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们