参数传递:值传递:Core Java

Java方法调用时的参数传递都是值传递

基本类型的参数值传递

void methodA(){
	int a=5;
	methodB(i);
}

void methodB(int i ){  //创建一个栈帧,创建一个本地变量i,并在栈帧中开辟4个字节空间,将传递来的数值5存储到这个空间中。
	i=i+3;
}

在上例中,A调用B方法后,将int型变量a的值,传递给方法B的参数i,无论变量i怎么变,都只是变量i自己的事儿,跟变量a无关了,变量a的值永远是5。

引用类型变量的参数值传递

class Person{
	String name;
	void setName(String name){
		this.name = name;
	}
}
class Test{
	void methodA(){
		Person p = new Person(); // 变量p中存储的是new Person()创建出的对象的存储地址,即引用,占4个字节
		methodB(p);
		
	}
	void methodB(Person person ){  // 创建了一个栈帧,并创建一个变量person,为其开辟4个字节的存储空间,将变量p的值,即对象的存储地址存放到这个变量person的空间中去。
		person.setName("jack");
	}
}

上例中,A调用B时,将变量p的值即对象的存储地址传递给了B方法中的变量person,无论方法B中person变量的值怎么变,A中变量p的值永远都不会变,永远存储的是 new Person()创建出来的对象的存储地址。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章