Java巩固提高复习-入职浩鲸科技自我学习篇-方法参数

 关于方法参数

1.程序设计语言的参数传递分为按值调用:方法接收的是调用者提供的值;

    按引用调用 :方法接收的是调用者提供的变量地址

 

2. 值得注意的事情:java设计语言总是按值调用 ,也就是方法得到的是参数值得一个拷贝,方法不能修改

传递给它的任何参数变量的内容

 

3.常见情况:方法参数有两种类型 基本数据类型和对象引用

基本数据类型 : 方法调用将不会改变基本数据类型的参数

对象引用 : 方法调用会改变对象参数的状态  (原理:方法依然得到的是对象引用的拷贝,而这个对象引用的

拷贝值仍是对象引用,并与其所拷贝的模板对象引用指向同一个对象

 

案例 :

public class Employee {
         
	private String str ;
	
	public Employee(String str){
		 
		this.str=str ;
	}
	
	public void getStr(){
		System.out.println(str);
	}
	
	
}
public class SwapWay {
	
	public void swap(Employee x , Employee y){
		
		Employee temp = x ;
		x  =  y ;
		y  = temp ;
		
		//x是a值得拷贝,y是b值得拷贝
		System.out.println("方法参数x,y .......");
		x.getStr();
		y.getStr();
		 
		
		
	}

	public static void main(String[] args) {
		
		Employee a = new Employee("I am A .") ;
		Employee b =  new Employee("I am B .") ;
		
		a.getStr();
		b.getStr();
		
		System.out.println("............");
		
		new SwapWay().swap(a,b);
		
		
		System.out.println(" 两个对象内部情况............");
		
		
		a.getStr();
		b.getStr();
		

	}

}

Java巩固提高复习-入职浩鲸科技自我学习篇-方法参数_第1张图片

结论:不难看出a , b 对象在交换方法执行后内部的数据并没有变化,但作为方法参数的x,y交换了

也就是说a , b 两个对象引用所指向对象地址并没有交换, x , y 的交换说明这里的方法参数拿到的

实际上是a , b 对象引用的拷贝值

也就意味着一个方法不能让对象参数引用一个新的对象

public void problemA(Employee a ,Employee b){
		
		a = b ;
		
	}
	

	public static void main(String[] args) {
		
		Employee a = new Employee("I am A .") ;
		Employee b =  new Employee("I am B .") ;
		
		a.getStr();
		 
		
		System.out.println("............");
		
		 
		new SwapWay().problemA(a, b);
		
		System.out.println(" 两个对象内部情况............");
		
		
		a.getStr();
	 
		

	}

Java巩固提高复习-入职浩鲸科技自我学习篇-方法参数_第2张图片

 

你可能感兴趣的:(javase,java)