看了网上一大堆有关java参数传递方式的文章,深感不得要领,哎,我也来尝试讲解一番吧。
按照编译理论,参数传递只有传值、传址两种主要的方式(其他还有传名和传结果),一种语言一般只有一种参数传递方式。传值就是传值的拷贝,非常好理解——C/C++、Java都是传值方式,且只有这一种方式!
java基本类型的值不用解释,java对象类型的值就是对象在内存中的地址,作为参数传递时,二者完全一样,都是传递值的拷贝,并且,在一个方法中,作为形式参数的变量可以被赋值(改写),不会影响作为实际参数被传递的变量的值(位于进行调用的上文环境中)。容易造成分歧的是,在一个方法中,利用对象类型参数访问并修改被指向的对象,确实会影响位于上文环境中的对象(废话,本来就是同一对象),很多人据此认为,java还有“传址”或“传引用”这种参数传递方式,其实非也,那只是对传入的地址的值的拷贝(还是地址)上的对象进行操作而已,作为形式参数的变量仍然只是一个拷贝,与上文环境无关。
传引用是怎么回事呢?其实,引用不过是C++引入的一个新的数据类型,纯粹是为了方便指针的使用,本质上仍然是指针,二者都是对象的地址,区别在于:
- 引用必须在声明时指向一个对象,指针不用(有人说引用就是对象的别名,非常正确)
- 引用不能被赋值(改写地址),指针可以
- 引用不能为空(NULL),指针可以
- 访问对象成员或属性的操作符不同,引用是'.',指针是'->'
C有指针类型,C++增加了引用类型,java继承了C和C++,但java的对象传递方式更类似于C中的指针——最好不要讲什么“传引用”,根本没有那种方式。
附:什么是形式参数和实际参数?
class A
{
void f(int i) // 这里的i是作为形式参数的变量
{
i = 100;
....
}
}
int i = 100;
A a = new A();
a.f(i); // 这里的i是作为实际参数被传递的变量
....
分享到:
相关推荐
11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java...
13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....
58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递...
主要介绍了JAVA参数传递方式,结合实例形式分析了java按值传递与引用传递区别及相关操作注意事项,需要的朋友可以参考下
关于Java参数传递的PPT,详细介绍参数传递的类型。彻底理解Java只有唯一传递方式——值传递。
这里详细的说明了,java参数传递的过程,引用传递,值传递
主要介绍了java中参数传递方式详解的相关资料,需要的朋友可以参考下
java参数传递 java 参数
Java参数传递的经典教学PPT,引用类型,基础类型传递的区别,String和StringBuffer类型传递的区别。
传值还是传引用 详细讲解JAVA参数传递机制 一目了然
java的参数传递对比,体现了值传递和引用传递的区别,是我在java入门是写的学习demo
62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递....
59.java基本类型的参数传递.zip59.java基本类型的参数传递.zip59.java基本类型的参数传递.zip59.java基本类型的参数传递.zip59.java基本类型的参数传递.zip59.java基本类型的参数传递.zip59.java基本类型的参数传递....
java参数的传递与返回值 江苏省无锡市
介绍java 方法的参数传递,本文是引用传递。
java传递参数的方法 很的东西 大家下载学习一下
Java的引用和函数参数传递Java的引用和函数参数传递Java的引用和函数参数传递Java的引用和函数参数传递
主要介绍了Java数组传递及可变参数操作,结合实例形式详细分析了java数组参数传递与可变参数相关使用技巧,需要的朋友可以参考下
读者将学习Java中方法调用时的参数传递方式,并分别介绍基本类型和引用类型在参数传递过程中的特点和区别。 能学到什么: 学习Java中方法调用时的参数传递方式。 理解基本类型和引用类型在参数传递过程中的特点和...
读者将学习Java中方法调用时的参数传递方式,并重点探讨基本类型和引用类型在参数传递过程中的特点和区别。此外,我们还将介绍可变参数和返回值的使用方法。 能学到什么: 学习Java中方法调用时的参数传递方式。 ...