java参数传递(二)
上一次我们分析java参数过程中,当传递的是基本类型和对象引用的情况.那么当传递的参数是数组呢,情况又会怎么样?
其实,数组是当成一个引用类型来传递的,轻看下面的例子!
/** * */package arguments.transport;/** * test the parameter transfer via array or object reference * * @author Bruce * @date Sep 26, 2011 * @version */public class ArrayParameterTransfer {public String nn = "main";public static void main(String[] args) {String[] s1 = new String[] { "Kitty", "Tom" };char[] ch = new char[] { 'a', 'b', 'c' };ArrayParameterTransfer a = new ArrayParameterTransfer();System.out.println("Before change:" + a.nn);changObj(a);System.out.println("After change:" + a.nn);change(s1, ch);System.out.println(s1[0]);System.out.println(ch);}/** * change the field of a instance of class * * @param a */private static void changObj(ArrayParameterTransfer a) {a.nn = "sub";}/** * chang the element value of a array * * @param s1 * @param ch */private static void change(String[] s1, char[] ch) {s1[0] = "Lily";ch[0] = 'z';}}打印:Before change:mainAfter change:subLilyzbc总结:当数组作为参数传递的时候,在方法里面改变了数组元素,那么实际上数组就真的被改变了,纵使数组的元素是引用类型也一样;当传递的是一个类对象引用的时候,可以根据我们上一节分析,对象内字段自然也被改变了,因为直接操作的是堆里面的统一内容。