Java 参数传递是值传递还是引用传递?

Java 语言的参数传递只有「按值传递」。当一个实例对象作为参数被传递到方法中时,参数的值就是该对象的引用的一个副本。指向同一个对象,对象的内容可以在被调用的方法内改变,但对象的引用(不是引用的副本) 是永远不会改变的。

对于8个基础类型(byte, short, int, long, float, double, char, boolean),很容易看出来是值传递,就不详细说了。

方法声明中的参数是形参,调用方法时传入的参数是实参。调用时传入参数的过程,是将实参拷贝一份赋值给形参的。

对于引用类型的对象,本身是一个指向实际内容的引用,在作为参数传递时,这个引用就是参数。所以此时发生拷贝的是“引用”,也就是生成了一个新的引用,只是引用的内容是一样的。

如果在被调用的方法内,将传入的引用,指向一个新的内容,外部的原对象引用是不会指向这个新内容的。由此可见,引用类型的对象在作为参数传递时也是值传递。

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

验证码已失效,请刷新验证码