1

形参与实参的区别,原来形参是庶子所以不得宠

 1 year ago
source link: https://blog.51cto.com/u_15688209/5390629
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

形参与实参的区别,原来形参是庶子所以不得宠

原创

wx62abed6a057bb 2022-06-17 11:02:35 ©著作权

文章标签 函数体 赋值 数据 文章分类 Java 编程语言 阅读数186

形参:

形式参数,形式就可以理解为它是一个虚拟的、表面的不是真实存在的一个变量,它一般用在给函数名(方法名)和函数体(方法体)中使用的参数。我们可以这么来形容:它就是在调用的过程中传递的参数,这个时候实参就赋值给了这个形参。往深层次里面看一下就是在方法被调用的时候,虚拟机才会给它分配空间(内存单元),在调用过程结束后就会释放内存单元。

形参与实参的区别,原来形参是庶子所以不得宠_数据_02

举个例子

一个大户人家里面有两个儿子,分别是形参、实参。实参是嫡子,形参是庶子,当有有客人来的时候发生的时候(我们可理解为到了调用的时候),这个大户人家为了面子,让外人看起来“我们对庶子也是很好的的!”就给庶子(形参)和实参内饰环境一样的一间房(实参赋值),平时庶子是没有房间的!

等到客人走了(调用结束),就会把分配给庶子(形参)的房间(内存空间)收回来!

形参与实参的区别,原来形参是庶子所以不得宠_赋值_03

我们要知道形参只在方法内是有效的,是不会影响方法外的。因为外面的人跟他更不是一家,所以不会分给他房子!

实参:
实际参数,用于调用时传递给方法的参数。实参在传递给别的方法之前是要被预先赋值的。他可以是常量、变量、表达式、函数,同时它必须有个确定的值,只有这样到后面形参出现才能把值赋给形参。

(重点理解)我们在传递和调用的过程中只可以把实参传递给形参!因为实参比较得宠,所以它的待遇就是一个标准,不能把形参的值反向作用到实参上。这不就等于让把嫡子的配置降低了,这种行为是在家族规矩中不允许的!

形参与实参的区别,原来形参是庶子所以不得宠_赋值_04

在方法调用过程中,形参的值也许会发生改变,但实参的值不会发生改变。
而在引用传递调用的机制中,实际上就是是将实参引用的地址传递给了形参,所以任何发生在形参上的改变也会发生在实参变量上。

形参与实参的区别,原来形参是庶子所以不得宠_函数体_05

形参和实参的区别

  1. 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
  2. 形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参   从而实现主调函数向被调函数的数据传送。
  3. 实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。
  4. 函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
  5. 当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值。
  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK