关于java中的形参和实参的区别-----转载

首先纠正下java2000的第一个错误说法:"java里不叫这个,而是叫传值和传对象。".引用jiabobber的话:形参就是形式上的参数啊,实参就是实际的参数啊,其实各种语言形参实参都一样的概念的吧。

jiabobber的这句话是对的,实参,形参是程序设计语言中的通用概念,并不是只有C,C++有而JAVA没有,也不叫传对象;

直白的讲,形参是形式上的参数,实参是实际的参数;
形参只是对实参的一种抽象类型描述,只是声明一个函数(方法)能接受什么类型的实参,而不确定接受的实参具体内容是多少;实参就是传递给函数(方法)对应形参的具体内容(值),形参的初始指(内容)由实参决定.形参在函数(方法)结束返回后就被释放了.

到这里,就又出现程序设计语言中的另一通用概念参数传递方式:传值和传址;

1.传值方式,只是将实参的值的拷贝传递给函数(方法),在方法内对形参进行操作,其对象是实参的拷贝,对实参不能造成影响.在方法结束返回后,形参被释放丢弃,实参的内容并不会改变;

2.传址方式,将实参的地址传递给函数(方法),在方法内对形参进行操作即等于对实参进行相同的操作,在方法结束返回后,形参同样被释放,实参的内容将会是对形参进行操作的结果.

这里,又要纠正java2000的一个错误:"传对象的引用,用于把一个对象的地址作为参数传过去,而不是对象本身。"

对象引用即对象在堆中的地址,记住!不是对象,是对象的地址.而且对于传址方式,在方法中交换两个形参后,实参也应该同时被交换!
对于形参是对象引用的,其传递方式还是按值传递!传的是对象引用的拷贝值,并不是对象引用的地址,所以方法能改变对象引用所指的对象的状态(因为对象引用及其拷贝都指向同一个对象),却不能将两个对象交换(因为形参是对象引用的拷贝,所以改变形参并不能改变实参的内容,即对象的地址.不明白的要跟基本类型的类比).

posted @ 2016-09-19 16:46  火山林风  阅读(973)  评论(0编辑  收藏  举报