天天看点

java面向对象(三)方法重载与值传递

什么是方法重载?

在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者类型不同。

为什么要使用方法重载?

想要实现同样的功能,但是传入方法的数据类型却跟原来不同。

方法的形参传递机制:值传递

形参:方法声明时的参数

实参:方法调用时实际传给形参的参数

值传递机制:

1、如果参数是基本的数据类型,此时实参赋给形参的是实参真实存储的数据值,复制了一份一样的数据传给方法中的形参,形参改变不影响实参

2、如果变量是引用数据类型,此时赋值的是变量所保存的地址值

//参数是基本数据类型
public class test15 {
  public static void main(String[] args) {
  	int m = 10;
  	int n = 20;
  	test15 tt = new test15();
  	//具体实例利用方法实现打印输出m和n交换后的结果
  	System.out.println("交换前:m= "+m+", n= "+n);
  	System.out.println();
  	tt.swap(m,n);
  	System.out.println("调用交换方法后的实参值:m= "+m+", n= "+n);
  }	
  //参数是基本数据类型
  public void swap(int m,int n) {
  	int temp;
  	temp = m;
  	m = n;
  	n = temp;
  	System.out.println("参数是基本数据类型-调用交换方法后的形参值:m= "+m+", n= "+n);
  	System.out.println();
  }
}

           
  • 运行结果
java面向对象(三)方法重载与值传递

内存解释图:

java面向对象(三)方法重载与值传递
//参数是引用数据类型
public class test16 {
	public static void main(String[] args) {
		Data data = new Data();
		data.m = 10;
		data.n = 20;
		System.out.println("交换前:m= "+data.m+", n= "+data.n);
		System.out.println();
		test16 tt = new test16();
		
		tt.swap(data);
		System.out.println("调用交换方法后的实参值:m= "+data.m+", n= "+data.n);
	}
	// 参数是引用数据类型
	public void swap(Data data) {
		int temp;
		temp = data.m;
		data.m = data.n;
		data.n = temp;
		System.out.println("参数是引用数据类型-调用交换方法后的形参值:m= " + data.m + ", n= " + data.n);
		System.out.println();
	}

}
class Data{
	int m;
	int n;
}
           
  • 运行结果
java面向对象(三)方法重载与值传递

内存解释图:

java面向对象(三)方法重载与值传递