Java官方教程(七-3)Using Objects 使用对象(2021.4.10)

前言

本文是橙子出于兴趣爱好对Java官方教程的尝试翻译,几乎每日更新,感兴趣的朋友可以关注一下橙子;翻译过程中尽可能多的对一些关键词保留了英文原文,如果你想看最纯正的英文原版教材却又看不懂,可以试着来看一下橙子的翻译版啊,欢迎大家留言讨论,冲鸭!
更多相关文章点击阅读
Java官方教程目录2021最新版

Using Objects

创建对象之后,可以将其用于某些用途,例如使用其某一字段(field)的值,更改某个字段,或调用某个方法来执行操作。

Referencing an Object’s Fields

对象字段按其名称访问,因此必须使用明确的名称。

在一个类中,可以使用其字段的简单名称,例如,我们可以在Rectangle类中添加一条语句,来打印宽度和高度:

System.out.println("Width and height are: " + width + ", " + height);

在这个例子中,宽和高是简单的名称。

对象所在类之外的代码,必须使用对象引用或者表达式,后接点(.)运算符,然后再接一个简单的名称,例如:

objectReference.fieldName

例如,在CreateObjectDemo类中,要想使用rectOne对象(Rectangle类的)的origin,width,height字段,必须分别使用名称rectOne.origin,rectOne.width和rectOne.height。

System.out.println("Width of rectOne: "  + rectOne.width);
System.out.println("Height of rectOne: " + rectOne.height);

在CreateObjectDemo类中,尝试使用width,height这样的简单名称是没有意义的,这些字段仅存在一个对象之中,这样会导致编译错误。

可以使用类似的代码显示rectTwo的信息。具有相同类型的对象,会有实例字段相同的各自的副本(copy)。因此,每个相同的对象都具有名为origin,width,height的字段。通过对象引用访问实例字段时,将引用特定对象的字段。CreateObjectDemo程序中的两个对象rectOne,rectTwo具有不同的origin,width,height字段。

要访问一个字段,可以像上面的示例一样,使用对对象的命名的引用,也可以使用任何返回对象引用的表达式。new运算符返回对象的引用,可以使用new的返回值来访问新对象的字段。

int height = new Rectangle().height;

该语句创建一个新的rectangle对象,并立即获取其高度。本质上,该语句计算矩形的默认高度。需要注意的是,该语句执行后,程序不再有对被创建对象的引用,因为程序没有存储引用。该对象是未被引用的,其资源可以由Java虚拟机(JVM)回收。

Calling an Object’s Methods

还可以使用对象引用来调用对象的方法。可以通过点(.)运算符将方法的简单名称附加到对象引用后面。另外,可以在括号内提供该方法的参数,如果该方法不使用任何参数,则使用空括号。

objectReference.methodName(argumentList);

或者

objectReference.methodName();

rectangle类有两个方法:getArea()用于计算矩形面积,move()用于修改矩形原点。调用两个方法的代码如下:

System.out.println("Area of rectOne: " + rectOne.getArea());
...
rectTwo.move(40, 72);

第一条语句调用rectOne的getArea()方法并显示结果。第二行移动rectTwo,move()方法将新值分配(assign)给对象的oring.x,orign.y。

与实例字段一样,objectReference必须是对对象的引用。可以使用变量名,也可以使用返回对象引用的表达式。new运算符返回对象引用,因此可以使用new的返回值来调用新对象的方法。

new Rectangle(100, 50).getArea()

表达式new Rectangle(100, 50)返回一个引用Rectangle对象的对象引用。可以使用点(.)运算符调用新Rectangle的getArea()来计算新矩形的面积。

一些方法(例如gerArea())返回一个值。对于返回一个值的方法,可以在表达式中使用方法调用。可以将返回值分配给变量,使用其来进行决策或控制循环。下面代码将getArea()的返回值分配给变量areaOfRectangle:

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

需要注意的是,在对象上调用方法与向对象发送消息相同。在这种情况下,调用getArea()方法的对象是由构造方法返回的。

The Garbage Collector

一些面向对象语言要求跟踪所创建的所有对象,并在不需要它们的时候明确的销毁它们。显示的内存管理是令人厌烦和容易出错的。Java平台允许创建任意数量的对象(当然,受到系统的限制),但是并不用担心去销魂它们。Java运行环境在确定对象不要需要时会销毁它,该过程称为垃圾回收。

当对象不再被引用时将被回收。当变量超出作用域时,通常会删除变量中包含的引用。或者,可以将变量设置为特殊值null,来显式的删除对象引用。一个对象可以有多个引用,在对象被回收之前,必须删除对该对象的所有引用。

Java运行环境有一个垃圾回收器,将定期销毁不再被引用的对象来释放内存,它将在合适的时间自动执行。

上一篇:Python实现头像换脸(AI换脸)


下一篇:可视化之路(五)Rectangle类详解