1、简单类型
按值传递,也就是说,传参时是拷贝一份实参,创建一个新的临时对象供函数内部使用,函数内对此对象的任何操作,都不会对实参有副作用。
2、类类型
按引用传递,也就是说,传参时实际上传递的是实参的一个引用(C++中引用传参的概念,和C++中的“引用”概念有区别,C++中的引用只有在初始化时才能绑定对象,并且一经绑定不可改变),可以理解为拷贝了一份原对象的地址,也就是C++中的指针。
Java中没有指针的概念,Java中的类类型实际上将C++的“指针”类型与类类型合为一体。所谓合为一体表现在,“指针”的标识符、操作符等,都和对象类的标识符相同,具体来说就是,通过.而非->调用成员,值的访问也不需要解引用符号*(同时不提供访问和操作“指针“地址的方式)。另一方面,类类型的=号也仅仅是基于“指针”地址复制的浅拷贝。
在函数中,可以通过调用类的成员函数改变该对象的数据成员,函数内修改此对象的操作将反映在调用它的实参上,但要注意,=号的行为是基于C++中指针复制的实现,因而=不会影响调用它的实参。