Java学习笔记——方法的重载和参数传递

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

java特有参数传递方式


	public class Person2 {
	/**
	 * 用数组传递可变参数个数的方法
	 * 如果一个数不填要定义一个空数组或者是null
	 * @param args
	 */
	public void printInfo(String[] args){
		for(int i=0;i<args.length;i++){
			System.out.println(args[i]);
		}
		
	}
	/**
	 * 用java特有的...的方式来传递可变个数的参数,这种参数在使用时与数组的使用方式相同 
	 * 如果没有参数可以不填
	 * ...形式可以传递 0到多个参数
	 * 如果一个方法有多个的形参,(...这种形式的)一定要放在所有的参数最后
	 * printInfo1(int i,String... args)这样的放置参数的方式是对的
	 * printInfo1(String... args,int i)这样的放置参数的方式是不对的
	 * @param args
	 */
	public void printInfo1(String... args){
		for(int i=0;i<args.length;i++){
			System.out.println(args[i]);
		}
	}

}

java里方法的参数传递方式只有一种,值传递

JVM内存:
堆heap:里面放的是所有的对象(包括自己定义的对象和字符串对象,存放的是具体的对象)
栈stack:存放基本数据类型和对象的引用(存放的是对象的地址)
方法区method:所有的class和static变量
基本数据类型值是保存在栈中,引用对象值是保存在堆中,栈中存的对象在堆中的地址

方法的参数传递与引用对象


public class DataSwap {
	public int a;

}

public class TestTransfer1 {
	public static void swap(DataSwap ds1){
		ds1.a=6;
		System.out.println("swap方法里,a Field的值是"+ds1.a);
	}
	public static void main(String[] args) {
		DataSwap ds=new DataSwap();
		System.out.println("执行Swap前,main方法里,a Field的值是"+ds.a);
		swap(ds);
		System.out.println("main方法里,a Field的值是"+ds.a);
	}
}

执行Swap前,main方法里,a Field的值是0
swap方法里,a Field的值是6
main方法里,a Field的值是6
解释:DataSwap ds=new DataSwap();
1、DataSwap ds=new DataSwap();把new DataSwap()存到了堆内存中,地址EB2500
2、ds引用对象存到栈中,地址是AD9500,值是new DataSwap()堆中的地址BE2500
3、调用swap方法给ds1引用对象保存到栈中地址是AD9600,存的值来源于实参ds,也就是ds的栈中存的值,这个值实际上就是之前new DataSwap()对象在对内存中的地址

方法的参数传递总结:
1、如果方法的形参是基本数据类型,那么实参(实际的数据)向形参传递参数时,就是直接传递值,把实参的值赋值给形参。
2、如果方法的形参是对象,那么实参(实际的对象),向形参传递参数的时候,传递的是引用对象在堆内存中的地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值