文档

Java™教程
隐藏目录
使用对象
路径:学习Java语言
课程:类和对象
章节:对象

使用对象

创建对象后,您可能想要对其进行一些操作。您可能需要使用其字段的值,更改其中一个字段,或调用其中一个方法来执行某个操作。

引用对象的字段

对象字段通过它们的名称进行访问。您必须使用一个清晰的名称。

您可以在其自己的类中使用简单名称来引用字段。例如,我们可以在Rectangle类中添加一个语句,以打印widthheight

System.out.println("宽度和高度为:" + width + "," + height);

在这种情况下,widthheight是简单名称。

位于对象类之外的代码必须使用对象引用或表达式,后跟点(.)运算符,后跟一个简单字段名称,如:

objectReference.fieldName

例如,在CreateObjectDemo类中的代码位于Rectangle类的代码之外。因此,要引用rectOne命名的Rectangle对象中的originwidthheight字段,CreateObjectDemo类必须使用名称rectOne.originrectOne.widthrectOne.height。程序使用这两个名称来显示rectOnewidthheight

System.out.println("rectOne的宽度:"  + rectOne.width);
System.out.println("rectOne的高度:" + rectOne.height);

尝试从CreateObjectDemo类的代码中使用简单名称widthheight是没有意义的,这些字段只存在于对象内部,将导致编译错误。

稍后,程序使用类似的代码来显示有关rectTwo的信息。相同类型的对象具有其自己的相同实例字段的副本。因此,每个Rectangle对象都有名为originwidthheight的字段。当您通过对象引用访问实例字段时,您引用特定对象的字段。在CreateObjectDemo程序中,rectOnerectTwo两个对象具有不同的originwidthheight字段。

要访问字段,您可以使用对对象的命名引用,如前面的示例所示,或者您可以使用返回对象引用的任何表达式。请记住,new运算符返回一个对象的引用。因此,您可以使用从new返回的值来访问新对象的字段:

int height = new Rectangle().height;

这个语句创建一个新的Rectangle对象,并立即获取其高度。实质上,这个语句计算了一个Rectangle的默认高度。请注意,在执行此语句后,程序不再具有对创建的Rectangle的引用,因为程序没有将引用存储在任何地方。该对象是无引用的,其资源可以被Java虚拟机回收利用。

调用对象的方法

你还可以使用对象引用来调用对象的方法。你需要在对象引用后附加方法的简单名称,并使用点操作符(.)进行连接。同时,你需要在括号中提供方法的参数。如果方法不需要任何参数,则使用空括号。

对象引用.方法名(参数列表);

或者:

对象引用.方法名();

Rectangle类有两个方法:getArea()用于计算矩形的面积,move()用于改变矩形的原点。以下是调用这两个方法的CreateObjectDemo代码:

System.out.println("rectOne的面积:" + rectOne.getArea());
...
rectTwo.move(40, 72);

第一条语句调用rectOnegetArea()方法并显示结果。第二行移动rectTwo,因为move()方法会给对象的origin.xorigin.y赋予新的值。

和实例字段一样,对象引用必须是一个指向对象的引用。你可以使用一个变量名,也可以使用任何返回对象引用的表达式。new操作符返回一个对象引用,所以你可以使用new返回的值来调用新对象的方法:

new Rectangle(100, 50).getArea()

表达式new Rectangle(100, 50)返回一个指向Rectangle对象的引用。如上所示,你可以使用点符号来调用新RectanglegetArea()方法来计算新矩形的面积。

一些方法,例如getArea(),会返回一个值。对于返回值的方法,你可以在表达式中使用方法调用。你可以将返回值赋给一个变量,用它做出决策或控制循环。下面的代码将getArea()的返回值赋给变量areaOfRectangle

int areaOfRectangle = new Rectangle(100, 50).getArea();

记住,调用特定对象的方法与向该对象发送消息是一样的。在这种情况下,getArea()被调用的对象是构造函数返回的矩形。

垃圾收集器

有些面向对象的语言要求你跟踪所创建的所有对象,并在不再需要时显式销毁它们。显式管理内存是繁琐且容易出错的。Java平台允许你创建任意数量的对象(当然受系统限制),而且你不需要担心销毁它们。Java运行时环境在确定对象不再被使用时会删除它们。这个过程被称为垃圾收集

当没有任何引用指向一个对象时,该对象就可以被垃圾回收。当变量超出作用域时,通常会丢弃变量中保存的引用。或者,你可以通过将变量设置为特殊值null来显式地丢弃对象引用。请记住,一个程序可以对同一个对象有多个引用;在对象可以被垃圾回收之前,所有对该对象的引用都必须被丢弃。

Java运行环境具有垃圾收集器,它会定期释放不再被引用的对象所占用的内存。当垃圾收集器确定时机合适时,它会自动执行清理工作。


上一页: 创建对象
下一页: 更多关于类的内容