1. 问题
- 为什么 Java 中一旦作为形参的数组的值在方法中被修改,即使没被返回,其实参数组的值也会改变?
2. 解答
- 在方法中,数组作为参数传递时传递的只是数组在内存中的地址值(即引用值),而不是将数组的元素直接传给形参;
- 这样的引用传递使方法的形参和实参同时指向数组在内存中的位置,所以无论是通过形参还是实参修改数组,内存中的数组的值都会发生改变;
- 这跟除了 String 外的所有引用数据类型相似,需要注意的是 Java 中只有值的传递而没有引用传递,具体的可以看我另一篇博文:Java 中字符串可以被方法引用传递吗;