import java.awt.Point; class PassByValue... ... { public static void modifyPoint(Point pt,int j)......{ pt.setLocation(5,5); j=15; System.out.println("in mP " + "pt = " + pt + "j="+j); } public static void main(String args[])......{ Point p = new Point(0,0); int i = 10; System.out.println("before mP " + "pt = " + pt + "j="+j); modifyPoint(p,i); System.out.println("after mP " + "pt = " + pt + "j="+j); } } p实际上指向一个point对象的引用,或者说这个point对象的名字,当p被传入modifyPoint中时,不会产生一个point对象的复件,只会产生p这个object refernce的复件,也就是在 modifyPoint中的pt。pt和p虽然并不一样,但是都指向那特定的point对象,modifyPoint所执行的语句完全是用在了这个对象上。 而这时的参数传递看起来是by reference ,但本质上还是by value,按值传递了p这个对象引用。