有趣的实参与形参
来源:互联网 发布:提示我windows未能启动 编辑:程序博客网 时间:2024/06/08 18:33
一般方法的结构如下:
修饰符 返回值类型 方法名(参数列表)
{
方法体
}
我们今天主要讲的就是实参与形参传递的问题。在参数列表中的就是形式参数,简称形参。当方法调用时,形参就用被变量或者数据替换。而这些变量和数据就是实际参数,也就是实参。还有就是形参是可以选的。即可以没有参数。
如 public static void swap(int x,int y)方法;其形参就是x和y。
public static void main(String[] args){
int a=1;
int b=2;
swap(a,b);//此时的a与b就是swap函数的实际参数。其本身的形参的值被a、b的值替换。
}
在调用才参数的方式时;实参的值是按值传递到方法中的形参的,即a的值给x;b的值给y。但是无论方法中的形参的值怎么变化,方法外的实参都不受影响。即当a与b把值传递给上面的swap函数中的x与y后,在swap函数中无论x与y的值怎么改变都不会影响到a与b的实际值的。这就是方法中形参改变,而实参不受影响。最后注意的是:实参形参必须是相同类型的数据类型才能传递成功。即实参a与形参x的数据类型一样,实参b与形参y的数据类型一样。
下面通过具体的例子加深理解
public class Transmit {
public static void main(String[] args) {
int a=1;
int b=2; //a、b是整形变量是实参
System.out.println("没交换之前a="+a+" b="+b);
swap(a,b);
System.out.println("交换之后a="+a+" b="+b);
}
public static void swap(int x,int y){
System.out.println("在swap函数中 交换之前 x="+x+" y="+y );
int t;
t=x;
x=y;
y=t;
System.out.println("在swap函数中 交换之后x="+x+" y="+y);
}
}
结果显示为:
通过上面的例子我们可以看出,在main函数中,a、b的值初始为1、2。但是经过交换函数swap后,a、b的值并没有发生变化。但是在swap函数中,形参x、y经过实参a、b的值传递后x=1,y=2;通过中间变量t交换后x=2,y=1.
通过这个例子我们可以看出形参只在其方法函数中变化,并且其方法函数外的实参是不受影响的。我们可以理解为,实参a、b只负责把自己的数据值传递给形参x、y后就离开了,让形参x、y在其swap方法函数中进行改变,而实参a、b自己则没有进去这个swap函数中。因此实参a、b不受形参x、y的影响。因为实参本身除了传递数值外并没有在参与进去。
这是不是很有趣呢!有兴趣的伙伴们可以自己去尝试一下。
- 有趣的实参与形参
- 实参与形参
- 实参与形参
- 实参与形参
- 实参与形参的传递关系
- 实参与形参的区别
- Java实参与形参
- C++实参与形参
- java实参与形参
- C函数的实参与形参的输出区别
- C语言基础 实参与形参的类型一致
- 形参和实参的区别与联系简要分析
- 关于c的形参实参与运行时结构
- 关于function的实参与形参关系
- C++语法基础--模板实参推断,模板类型形参的实参的受限转换,模板实参推断与函数指针
- C语言实参与形参
- 非类型形参的模板实参
- java 实参和形参的区别
- A Spy in the Metro
- 随机迷宫生成算法浅析
- [BZOJ3702][BZOJ2212]-线段树合并
- python备忘2
- Linux系统调用(syscall)原理(转)
- 有趣的实参与形参
- JAVA基础 一维、二维数组
- Hibernate 06 : 双向多对一
- 【二分答案】SDUT-4072 小绿的脱单梦
- c语言函数指针的理解与使用
- linux 怎么样复制文件夹内所有文件到另一个文件夹?
- HDU1548A strange lift(bfs)
- Java三大器(Filter,Listener,Interceptor)
- 鸡兔同笼