java中形参和实参的区别
引用博客
引用博客
形参和实参的区别
形参
就是形式参数,用于定义方法的时候使用的参数,用来接收调用者传递的参数。形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元。
因此,形参只在方法内部有效,所以针对引用对象的改动也无法影响到方法外。
实参
就是实际参数,用于调用方法是传递给方法的参数。实参在传递给方法前是要被先赋值才能传递的。
在值传递的过程中,只能把实参传递给形参,而不能把形参的值反作用给实参。在函数调用过程中·,形参的值发生改变,而实参的值不会发生改变。
在引用传递调用的机制中,实际上是将实参引用的地址传递给了形参,所以任何发生在形参上的改变也会发生在实参变量上。
值传递和引用传递
在谈值传递和引用传递之前先了解下java数据类型有哪些
Java数据类型
java的数据类型有两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。
基本类型包括byte,short,int,long,char,float,double,boolean这八大基本数据类型,
基本类型的变量保存原始值,即它代表的值就是数值本身,原始值一般对应在内存上的栈区。
引用类型包括类类型,接口类型和数组保存的是引用值,引用值指向内存空间的地址。代表了某个对象的引用,而不是对象本身。对象本身存放在这个引用值所表示的地址的位置。被引用的对象对应内存上的堆内存去。
变量的基本类型和引用类型的区别
基本数据类型在声明是系统就给它分配空间,无论是否赋值,声明的时候虚拟机就会分配4字节的内存区域。引用数据类型不同,它声明时只给变量分配了引用空间,而不分配数据空间。
String 类型时声明的时候没有分配数据空间,只有4byte的引用大小,在栈区,而在堆内存区域没有任何分配。
基本类型的变量是值传递;引用类型的变量
值传递
方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的原始值得一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值得修改,不影响实际参数的值
引用传递
一般也称为地址传递。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的原始值的内存地址。
在方法执行中,形参和实参内容相同,只想同一块内存地址,方法执行中对引用的操作将影响到实际对象。
java中形参和实参的区别相关推荐
- Java中 形参 和 实参 的区别:
形参(parameter): 全称为"形式参数" ,由于它不是实际存在变量,所以又称虚拟变量. 实参(argument): 全称为"实际参数",是在调用时传递给 ...
- java中实参和形参_java中形参和实参的区别
实参和形参是程序设计语言中的通用概念,并不是只有C,C++有而JAVA没有.关于他们两者的区别你知道吗?下面是学习啦小编为大家准备的java中形参和实参的区别,希望大家喜欢! java中形参和实参的区 ...
- java形参列表怎么理解_关于Java中形参与实参的理解
今天阅读了一个写的非常棒的博文,通过此博文再次复习了Java中参数传递的知识(即值传递与引用传递的区别).参考网站http://www.cnblogs.com/binyue/p/3862276.htm ...
- 你真的了解JAVA的形参和实参吗?
前几天在头条上看到一道经典面试题,引发了一些思考.也是写这篇文章的导火索. 背景 请看题: public class Main { public static void main(String[] a ...
- Java方法的形参和实参的区别
Java方法的形参和实参的区别,可以通过以下示例理解,如下所示. 示例代码: package com.example.jdbctemplateproject.core;public class Tes ...
- C语言形参和实参的区别
形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参. 实参(实际参数) 函数被调用时给出的参数包含了实实在在的 ...
- C语言形参和实参的区别(非常详细)
如果把函数比喻成一台机器,那么参数就是原材料,返回值就是最终产品:从一定程度上讲,函数的作用就是根据不同的参数产生不同的返回值. 这一节我们先来讲解C语言函数的参数,下一节再讲解C语言函数的返回值. ...
- java中的异常种类和区别以及处理机制和区别
java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...
- java中ArrayList和LinkedList的区别
首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...
最新文章
- MySQL面试题 | 附答案解析(二)
- ?? 运算符 和三元运算符
- python方向键映射_python交互界面无法使用方向键
- 高并发编程-深入分析wait和sleep的区别并结合源码示例佐证
- 1Ubuntu下ftp服务器搭建
- Android ExpandableListView几个特殊的属性
- 电脑计算机的硬盘那些可以删除吗,我的电脑出现多个可移动磁盘该怎么删除?...
- 13004.循环数组队列(C语言)
- VBA中数组(Array)与随机数(Rnd)的使用
- 油猴安装使用[自留]
- msm8937 bootloader流程分析
- 苹果录屏没声音_苹果耳机突然没声音
- chrome鼠标手势插件
- linux编辑文本(vim)时跳转到最后一行和第一行及相关指令 CentOS------编辑、修改文件命令
- 初秋进补 粥汤大对决
- Wangle中EchoClient分析
- 《C语言程序设计》江宝钏主编-习题1-4-圆柱体
- (EPROCESS/KPROCESS/ETHREAD/KTHREAD)进程与线程内核层中的结构
- Beautiful Soup:4 kinds of objects
- 节省你学习时间的百余个谷歌小技巧