为什么说Java只有值传递?(2)

从结果中可以看出,在函数体中stu1stu2所指向的对象确实是发生了改变,这是因为在值传递的过程中拷贝了他们在堆中的地址。

来看看他们在内存中是怎么样的:

为什么说Java只有值传递?

这时候你可能会问,既然java的值传递是拷贝地址,那我能不能改变地址所指向的内容?答案是:当然可以

public static void  changeInf(Student stu) {
        stu.setName("我改名字了");
    }
       
    public static void main(String[] args) {
        Student stu=new Student("张三",18);
        changeInf(stu);
        System.out.println(stu);
    }

结果:

Student [name=我改名字了, age=18]

对象内容改变了

结论:java中只有值传递,这可能是因为java没有指针和别名引用的原因吧。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5f494e5966b67246fbcf59211cc11243.html