方法的重载:
定义:方法名相同但是参数列表不同
有个前提得在同一种类中,方法名相同
参数列表不同(参数的个数,顺序,类型,)只要有一个地方不一样就是方法的重载。
结构例子:
重载的注意事项
方法重载和变量名没有关系。就看方法名和类型
方法名一样和参数列表一样 就是重复定义
跟返回值没有关系
参数传递:
解析:这里最后System.out.porintln(a);//1 因为int a=1;在main中 所以就是把
a=1的值赋给了get方法里,但是get方法没有返回值,这是get(a=0) 只打印了main里的a 所有
porintln a=1.
值传递:
解析:先把Demo02文件转换成Demo02.class文件然后进到方法和数据共享区,
扫描出main方法,放main方法进栈 这个变量a是存在栈里面只要不进堆就在栈里面
get(a)是方法调用然后就进class文件找 栈的方法。这个gei(a)里面传递的是a里面的值(i),
吧这个a=1的值穿到了我方法的形参里,然后方法里让a=2,然后a=2后方法 消失get里没有返回值,
又打印了一下a 所以a里面的值是1.
值传递:当我实参给形参赋的是一个值的时候没有任何影响
解析:println(arr[0])的值为2
编译Demo03产生一个Demo03.class文件存到方法和数据共享区
然后扫描出main方法然后mian进栈执行在 从你class文件里找到main方法
让他进栈执行。然后代码从上往下一步一步执行int []={1,2,3}这一步让你在堆里开一个
三个长度的数组先给他们赋予初始值是0;又因为她给你的数组赋值了所以说把他们的值都改掉就是1
2,3然后在分配地址 这个1指向arr 存到arr里面去了。然后在调用get方法,进栈以后传了一个实参数,
不过传的是一个地址 是0x001,然后把这个地址给方法里的arr,给这个arr赋值 赋的是0x001;
所有这个arr[0]=2就等于0x001[0]=2;然后方法结束,方法消失,然后打印arr[0]的值是2
引用传递:
如果传的是一个地址值或者到堆里的东西 一定会有影响
总结: