1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没有改变。
2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。
代码如下:
java 代码
- public class Tester {
- public static void main(String[] args) {
- int primitive = 2;
- changePrimitive(primitive);
-
- MyClass myClass = new MyClass();
- changeObject(myClass);
-
-
- }
-
- public static void changePrimitive(int primitive) {
- primitive = 3;
- }
-
- public static void changeObject(MyClass myClass) {
- myClass.i = 3;
- myClass = new MyClass();
- }
- }
-
- class MyClass {
- int i;
- }
另一个解释
1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的
2、在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。
转自http://yousking.iteye.com/blog/65164