小学生级别Java笔记_java里没有引用传递,只有值传递(通过举例说明)_2019/7/30

什么是引用传递?
形参是实参的引用,两者相当于指向同一块内存空间的两个指针,值产生同步变化。
什么是值传递?
就像影分身。。==给形参分配新的内存空间,形参和实参实际上是两个个体。
仅仅把实参的值传给形参,形参参与运算,实参不参与运算。
但是有一点值得注意
当形参为引用数据类型时,虽不能改变实参的值(如一个数组首地址),但是能用形参改变这块内存空间所存储的数据值(如数组中的元素值)。

public class Example {
	String str = new String("good");
	char[] ch = { 'a', 'b', 'c' };

	public static void main(String[] args) {
		Example ex = new Example();
		ex.change(ex.str, ex.ch);
		System.out.print(ex.str + " and ");
		System.out.print(ex.ch);
	}

	public void change(String str, char[] ch) {
		str = "test ok";
		ch[0] = 'g';
	}
}

本题输出为:test ok and gbc

执行完ex.change(ex.str, ex.ch);后,实参ex.str和ex.ch的值(字符串数组首地址)都未改变
但是ch数组中的内容改变了,改变原因:
形参被赋值为ch数组的首地址,可以用形参访问数组元素,并修改元素值。

发布了33 篇原创文章 · 获赞 4 · 访问量 2169

猜你喜欢

转载自blog.csdn.net/weixin_44981510/article/details/97789239