Java 方法参数是“传值调用”还是“传址调用”?-《从Hello World 到三味杂陈》

提起 Java 参数传递,如果不深入研究和亲手测试,会给你带来灭顶之灾。鉴于语言之间的差异,先约定一下定义:

传值调用:是指把一个变量的值,通过方法参数,传递给方法。方法内对该变量的任何更改不会影响方法外该变量的值。也就是说,传递给方法的是该变量的一个副本。

传址调用:Java 官方称为“传引用”。其他语言称为“传址”。即把一个变量所对应的内存地址,传递给方法。因为方法接收的是内存地址,因此方法内任何对该变量的操作,都会影响方法外该变量的值。

Java 究竟是传址,还是传值?Java 的混乱,让我们在 Eagsen Pi 的开发中吃了大亏,今天总结一下:

(一)支持传值调用的类型:

1、基本数据类型;如 int

2、基本数据类型的封装类型;Integer

3、String 类型

4、enum 枚举类型

5、interface 类型

(二)支持传址调用的类型:

1、第(一)中情况中所述类型的数组;

2、所有的自定义类;

以上总结:凡是不自带或者不支持重写 clone 方法的,都是传值,其余的都是传引用;

你可能感兴趣的:(java)