`
Brucegaochina
  • 浏览: 39759 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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:main
After change:sub
Lily
zbc



总结:当数组作为参数传递的时候,在方法里面改变了数组元素,那么实际上数组就真的被改变了,纵使数组的元素是引用类型也一样;当传递的是一个类对象引用的时候,可以根据我们上一节分析,对象内字段自然也被改变了,因为直接操作的是堆里面的统一内容。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics