向方法传递参数
给方法传递一个对象,就是将对象的引用传递给方法。
传递基本类型参数:java使用“值传递”传递参数的方法。当将一个基本类型的变量传递给一个方法时,该变量在方法完成后保持不变。
传递引用类型参数:当将引用类型的变量传递给方法时,对该方法内变量引用的对象的任何更改都是对该方法之外的变量引用的对象的永久性更改。实际参数和形式参数变量都引用同一对象。
实例
package chapter9; public class TestPassObject { /** Main method */ public static void main(String[] args) { // Create a Circle object with radius 1 CircleWithPrivateDataFields myCircle = new CircleWithPrivateDataFields(1); // Print areas for radius 1, 2, 3, 4, and 5. int n = 5; printAreas(myCircle, n); // See myCircle.radius and times System.out.println("\n" + "Radius is " + myCircle.getRadius()); System.out.println("n is " + n); } /** Print a table of areas for radius */ public static void printAreas( CircleWithPrivateDataFields c, int times) { System.out.println("Radius \t\tArea"); while (times >= 1) { System.out.println(c.getRadius() + "\t\t" + c.getArea()); c.setRadius(c.getRadius() + 1); times--; } } }
结果:
Radius Area 1.0 3.141592653589793 2.0 12.566370614359172 3.0 28.274333882308138 4.0 50.26548245743669 5.0 78.53981633974483 Radius is 6.0 n is 5
上一个TestCircleWithPrivateDataFields方法是在主方法里通过创建对象,对象调用setRadius方法更新数据域,这次的方法
TestPassObject则是在类的内部printAreas方法里调用c来改变,效果是一样的。
所以,类内部方法里或方法外都可以改变对象的属性,这就是引用上的传值。