引用博客
引用博客

形参和实参的区别

形参

就是形式参数,用于定义方法的时候使用的参数,用来接收调用者传递的参数。形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元。
因此,形参只在方法内部有效,所以针对引用对象的改动也无法影响到方法外。
实参

就是实际参数,用于调用方法是传递给方法的参数。实参在传递给方法前是要被先赋值才能传递的。
在值传递的过程中,只能把实参传递给形参,而不能把形参的值反作用给实参。在函数调用过程中·,形参的值发生改变,而实参的值不会发生改变。
在引用传递调用的机制中,实际上是将实参引用的地址传递给了形参,所以任何发生在形参上的改变也会发生在实参变量上。
值传递和引用传递

在谈值传递和引用传递之前先了解下java数据类型有哪些
Java数据类型

java的数据类型有两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。

基本类型包括byte,short,int,long,char,float,double,boolean这八大基本数据类型,

基本类型的变量保存原始值,即它代表的值就是数值本身,原始值一般对应在内存上的栈区。

引用类型包括类类型,接口类型和数组保存的是引用值,引用值指向内存空间的地址。代表了某个对象的引用,而不是对象本身。对象本身存放在这个引用值所表示的地址的位置。被引用的对象对应内存上的堆内存去。
变量的基本类型和引用类型的区别

基本数据类型在声明是系统就给它分配空间,无论是否赋值,声明的时候虚拟机就会分配4字节的内存区域。引用数据类型不同,它声明时只给变量分配了引用空间,而不分配数据空间。

String 类型时声明的时候没有分配数据空间,只有4byte的引用大小,在栈区,而在堆内存区域没有任何分配。
基本类型的变量是值传递;引用类型的变量
值传递

方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的原始值得一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值得修改,不影响实际参数的值
引用传递

一般也称为地址传递。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的原始值的内存地址。

在方法执行中,形参和实参内容相同,只想同一块内存地址,方法执行中对引用的操作将影响到实际对象。

java中形参和实参的区别相关推荐

  1. Java中 形参 和 实参 的区别:

    形参(parameter): 全称为"形式参数" ,由于它不是实际存在变量,所以又称虚拟变量. 实参(argument): 全称为"实际参数",是在调用时传递给 ...

  2. java中实参和形参_java中形参和实参的区别

    实参和形参是程序设计语言中的通用概念,并不是只有C,C++有而JAVA没有.关于他们两者的区别你知道吗?下面是学习啦小编为大家准备的java中形参和实参的区别,希望大家喜欢! java中形参和实参的区 ...

  3. java形参列表怎么理解_关于Java中形参与实参的理解

    今天阅读了一个写的非常棒的博文,通过此博文再次复习了Java中参数传递的知识(即值传递与引用传递的区别).参考网站http://www.cnblogs.com/binyue/p/3862276.htm ...

  4. 你真的了解JAVA的形参和实参吗?

    前几天在头条上看到一道经典面试题,引发了一些思考.也是写这篇文章的导火索. 背景 请看题: public class Main { public static void main(String[] a ...

  5. Java方法的形参和实参的区别

    Java方法的形参和实参的区别,可以通过以下示例理解,如下所示. 示例代码: package com.example.jdbctemplateproject.core;public class Tes ...

  6. C语言形参和实参的区别

    形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参. 实参(实际参数) 函数被调用时给出的参数包含了实实在在的 ...

  7. C语言形参和实参的区别(非常详细)

    如果把函数比喻成一台机器,那么参数就是原材料,返回值就是最终产品:从一定程度上讲,函数的作用就是根据不同的参数产生不同的返回值. 这一节我们先来讲解C语言函数的参数,下一节再讲解C语言函数的返回值. ...

  8. java中的异常种类和区别以及处理机制和区别

    java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...

  9. java中ArrayList和LinkedList的区别

    首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...

最新文章

  1. MySQL面试题 | 附答案解析(二)
  2. ?? 运算符 和三元运算符
  3. python方向键映射_python交互界面无法使用方向键
  4. 高并发编程-深入分析wait和sleep的区别并结合源码示例佐证
  5. 1Ubuntu下ftp服务器搭建
  6. Android ExpandableListView几个特殊的属性
  7. 电脑计算机的硬盘那些可以删除吗,我的电脑出现多个可移动磁盘该怎么删除?...
  8. 13004.循环数组队列(C语言)
  9. VBA中数组(Array)与随机数(Rnd)的使用
  10. 油猴安装使用[自留]
  11. msm8937 bootloader流程分析
  12. 苹果录屏没声音_苹果耳机突然没声音
  13. chrome鼠标手势插件
  14. linux编辑文本(vim)时跳转到最后一行和第一行及相关指令 CentOS------编辑、修改文件命令
  15. 初秋进补 粥汤大对决
  16. Wangle中EchoClient分析
  17. 《C语言程序设计》江宝钏主编-习题1-4-圆柱体
  18. (EPROCESS/KPROCESS/ETHREAD/KTHREAD)进程与线程内核层中的结构
  19. Beautiful Soup:4 kinds of objects
  20. 节省你学习时间的百余个谷歌小技巧

热门文章

  1. 七夕情侣浪漫表白html网页js特效代码 七夕情人节表白示爱网站源码制作
  2. 让自己分享的网址在QQ中更有逼格
  3. 高仿新闻教程--新闻Item的布局复习(3)
  4. python画极坐标图_Python matplotlib绘制极坐标图
  5. 怎么在matlab画双坐标,如何利用matlab的plotyy函数画双坐标图??
  6. 网络及路由器故障诊断基础知识
  7. 归置归置,我的 2022
  8. week2-二分和二分搜索
  9. python初中生有必要学吗_作为初中生该如何学编程?
  10. R语言:用R语言填补缺失的数据