相信很多新手朋友都对java存在个误解:java中参数是通过引用方式传递告诉大家这种想法是今天我们来带你认识真正JAVA参数传递思路方法中国自学编程网www.zxbc.cn
我们先来看看这样个例子:
import java.awt.Po;
test1...{
public void mody(Po pp, i)...{
pp.Location(2,3);
i=5;
.out.prln(\"In mody p=\"+pp+\" and i =\"+i);
}
public void (String args)...{
Po p = Po(0,0);
i =100;
.out.prln(\"Before mody p=\"+p+\" and i =\"+i);
mody(p,i);
.out.prln(\"After mody p=\"+p+\" and i =\"+i)
}
}
大家可以想想得到结果是什么?
-------------------正确输出应该是:
Before mody p = java.awt.Po[x=0,y=0] and i =100
In mody p=java.awt.Po[x=2,y=3] and i=5;
After mody p=java.awt.Po[x=2,y=3] and i =100;
前两行可能你们都想到了第 3行可能会想不到
--------------------
为什么会得到这样结果呢?
很明显 mody思路方法修改了p对象却没有改变i值
说重点吧事实上mody思路方法是在和Po对象引用复件打交道
而不是和Po对象复件在打交道
p是个对象引用而且java是以值方式传递参数
说具体点吧java是以值方式传递对象引用
当p从被传入到mody 思路方法时传递是p这是个引用复件所以mofy是在和同个对象打交道只不过是通过它别名pp罢了
最新评论