简单看懂方法的参数传递

pankaj-patel-1366018-unsplash.jpg

方法的参数传递


一.方法的参数传递:

<1>参数分为哪几种?
1.实参;2.形参;

<2>什么是实参,什么是形参?
假设现在你有一支钢笔,钢笔的外壳就是形参,是不变的。而墨水则是实参,是需要用的。

<3>实参具体位置在哪里?形参位置具体在哪里?
下面看一段代码:

1. public class test1{
2.
3.   public static void main(String[] args){
4.           
5.           Test t1 = new Test();
6.           
7.          //s1 和 s2 是实参 
8.           int s1 = 1;
9.           int s2 = 2;
10.           
11.           System.out.println("s1:" + s1 + ", s2" + s2);
12.           
13.           //调用swap()方法时,传入实参的值
14.           t1.swap(s1,s2);
15.           
16.           System.out.println("s1:" + s1 + ", s2" + s2);
17.           
18.           /*swap(int s1,int s2) s1 和 s2 是形参
19.           *形参的命名是任意,也可以和实参一样。
20.           */
21.           public void swap(int s1,int s2){
22.                 
23.                 int temp = i;
24.                 i = j;
25.                 j = temp;
26.                 
27.           }
       

输出结果为:

s1:1, s2:2
s1:2, s2:1

总结:
1.形参:方法声明时,方法小括号内是形参。
2.实参:调用方法时实际传入参数的值。


二.规则:java中的参数传递机制:值传递机制

<1>形参是基本数据类型:将实参的值传递给形参的基本数据类型的变量

<2>形参是引用数据类型:将实参的引用类型变量的值(对应的堆空间的对象的首地址值)传递给形参的引用类型变量。

第一个形参是基本数据类型时,实参的数值传递传递给形参,上面的代码是一个案例了。


现在来说说第二个,当形参为引用数据类型的情况。

先举个栗子,便于读者理解:

小明和小华现在有同时共有一辆玩具车,可以把玩具车理解为对象首地址值共有可以理解为一个指针,小明和小华同时指向玩具车,而小明不喜欢玩具车轮子的型号,背着小华偷偷的把轮子型号换了。

这时小华不知道车轮被小明换了。轮子是玩具车的一部分,对象首地址值就是玩具车,轮子就是首地址值指向的数值,现在数值被改变了。

先看这段代码:

1.public class test2{
2.   
3.   //创建一个swap()方法,形参为DateSwap类型的 ds
4.   public void swap(DateSwap ds){
5.   
6.   int temp = ds.i;
7.   ds.i = ds.j;
8.   ds.j = ds.temp;
9.   
10.   
11.   }
12.   
13.   //创建一个静态类
14.   static void DateSwap{
15.   
16.     int i = 1;
17.     int j = 2;
18.   
19.     }
20.     
21.   //主方法main()
22.   public static void main(String[] args){
23.   
24.   //创建对象t1
25.   Test1  t1 = new Test1();
26.   
27.   DateSwap ds = new DateSwap();
28.   
29.   //调用swap()方法
30.   t1.swap(ds);
31.   
32.   System.out.println("ds.i" + ds.i + "ds.j" + ds.j);
33.   
34.  
35.   }
36.   
37.}
简单看懂方法的参数传递_第1张图片
ED092BFF73EA705087577F184B86571A.png-92.9kB

在栈区中开辟了两个方法,分别把main()看成小明,swap()看成小华,new出来的对象的首地址值看成玩具车,静态DateSwap类中初始化的 i 和 j 是轮子,现在把轮子型号做了个交换。

注意:

引用数据类型的值其中只要一改变,原值就会跟着改变,而基本数据类型是其中一个改变,原值不改变。

就像你去复印一份资料,复印件你怎么画都行,原件内容始终是不变的,而引用数据类型是,你拿去复印时,不小心被帮你复印的人弄了几笔上去,原件内容也就改变了。

s1 和 s2 是基本数据类型,s1 和 s2 被交换后,原来的s1 和 s2 保持不变,可以拿第一个代码对比第二个代码看。

如果你喜欢这篇文字,可关注微信公众号:wu_you_lT,有深度好文等你阅读哦!

你可能感兴趣的:(简单看懂方法的参数传递)