基本类型和引用类型作为参数传递
|
class Demo { public static void main(String[] args) { int x = 4; show(x); System.out.println("x="+x); } public static void show(int a) { a = 5;
} } |
|
基本类型作为参数传递时,其实就是将基本类型变量x空间中的值复制了一份传递给调用的方法show(),当在show()方法中x接受到了复制的值,再在show()方法中对x变量进行操作,这时只会影响到show中的x。当show方法执行完成,弹栈后,程序又回到main方法执行,main方法中的x值还是原来的值。
|
class Demo { int x ; public static void main(String[] args) {
Demo d = new Demo(); d.x = 5; show(d); System.out.println("x="+d.x); } public static void show(Demo d) { d.x = 6; } } |
|
当引用变量作为参数传递时,这时其实是将引用变量空间中的内存地址(引用)复制了一份传递给了show方法的d引用变量。这时会有两个引用同时指向堆中的同一个对象。当执行show方法中的d.x=6时,会根据d所持有的引用找到堆中的对象,并将其x属性的值改为6.show方法弹栈。
java中的方法可以传递参数,参数的传递方法就是值传递。参数有形参和实参,定义方法时写的参数叫形参,真正调用方法时,传递的参数叫实参。调用方法时,会把实参传递给形参,方法内部其实是在使用形参。所谓值传递就是当参数是基本类型时,传递参数的值,比如传递i=10,真实传参时,把10赋值给了形参。当参数是对象时,传递的是对象的值,也就是对象的首地址。就是把对象的地址赋值给形参。基本类型当做方法的形参时
浙公网安备 33010602011771号