方法的重载和传递和参数传递

 

方法的重载:

定义:方法名相同但是参数列表不同

有个前提得在同一种类中,方法名相同

参数列表不同(参数的个数,顺序,类型,)只要有一个地方不一样就是方法的重载。

结构例子:

 

重载的注意事项

方法重载和变量名没有关系。就看方法名和类型

方法名一样和参数列表一样 就是重复定义

跟返回值没有关系

 参数传递:

 解析:这里最后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

引用传递:

如果传的是一个地址值或者到堆里的东西 一定会有影响

总结:

猜你喜欢

转载自www.cnblogs.com/www1842564021/p/12035161.html