一、形参

形参是本地变量,它声明在方法的参数列表中,而不是方法体中。

二、实参

当代码调用一个方法时,形参的值必须在方法的代码开始执行之前被初始化。

1.用于初始化形参的表达式或变量称作实参。

    2.实参位于方法调用的参数列表中。

3.每一个实参必须与对应形参的类型相匹配,或是编译器必须能够把实参隐士转换为那个类型。

  

当方法被调用的时候,每个实参的值都被用于初始化相应的形参,方法体随后被执行。

三、值参数

使用值参数,通过将实参的值复制到形参的方式把数据传递给方法。方法被调用时,系统做如下操作。

1.在栈中为形参分配空间。

2.将实参的值复制给形参。

值参数的实参不一定是变量。它可以是任何能计算成相应数据类型的表达式。

在把变量用作实参之前,变量必须被赋值(除非是输出参数)。对于引用类型,变量可以被设置为一个实际的引用或null。

下图说明了实参和形参在方法执行的不同阶段时的值,它表明以下3点。

1.在方法被调用前,用作实参的变量a2已经在栈里了。

2.在方法开始时,系统在栈中为形参分配空间,并从实参复制值。

1)因为a1是引用类型的,所以引用被复制,结果参数和形参都引用堆中的同一个对象。

2)因为a2是值类型的,所以值被复制,产生了一个独立的数据项。

3.在方法的结尾,f2和对象f1的字段都被加上了5。

1)方法执行后,形参从栈中弹出。

2)a2,值类型,它的值不受方法行为的影响。

3)a1,引用类型,但它的值被方法的行为改变了。

最新文章

  1. 【POJ】3207 Ikki's Story IV - Panda's Trick
  2. 如何成为一名优秀的前端工程师 (share)
  3. sublime text3侧边栏主题不生效问题解决
  4. AD板层定义介绍(二)
  5. 【转】java提高篇(二三)-----HashMap
  6. BlokUI的使用
  7. android:contentDescription的作用是什么
  8. unity3d为什么会有三种脚本语言?
  9. web浏览器上传超大文件插件
  10. HTML学习笔记 基础标签及css引用案例 第一节 (原创)参考使用表
  11. Typescript学习
  12. 第15章 使用EntityFramework Core进行配置和操作数据 - Identity Server 4 中文文档(v1.0.0)
  13. MySQL数据库char与varchar的区别分析及使用建议
  14. json和jsonp的区别?
  15. 获取laravel项目的路径的内置帮助函数
  16. Markdown基本使用方法
  17. nodejs pipe实现大文件拷贝
  18. phantomjsDriver的初始化
  19. EasyNetQ简单使用
  20. 解决ssh登录Host key verification failed

热门文章

  1. PyCharm中Dictionary与Python package的区别
  2. JAVA泛型知识--> <? extends T>和<? super T>
  3. Spring Cloud Feign踩坑记录(二)
  4. 【大数据应用技术】作业十|分布式文件系统HDFS 练习
  5. 一、JavaScript基础
  6. java.lang.Error: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
  7. 东站七雄保C位!论三线楼市网红板块的自我修养
  8. CentOS 6和 CentOS 7的区别【转】
  9. 用SC命令 添加或删除windows服务提示OpenSCManager 失败5
  10. vmware装centos7 无法上网