前言

本文是橙子出于兴趣爱好对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运行环境有一个垃圾回收器,将定期销毁不再被引用的对象来释放内存,它将在合适的时间自动执行。

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

  1. Java官方教程目录2021最新版

    前言 本文是橙子出于兴趣爱好对Java官方教程的尝试翻译,几乎每日更新,感兴趣的朋友可以关注一下橙子:翻译过程中尽可能多的对一些关键词保留了英文原文,如果你想看最纯正的英文原版教材却又看不懂,可以试着 ...

  2. Java官方教程(三-2)赋值 运算和一元运算符(2020.12.19)

    前言 本文是橙子出于兴趣爱好对Java官方教程的尝试翻译,几乎每日更新,感兴趣的朋友可以关注一下橙子:翻译过程中尽可能多的对一些关键词保留了英文原文,如果你想看最纯正的英文原版教材却又看不懂,可以试着 ...

  3. Java官方教程(三-1)运算符 operator(2020.12.18)

    前言 本文是橙子出于兴趣爱好对Java官方教程的尝试翻译,几乎每日更新,感兴趣的朋友可以关注一下橙子:翻译过程中尽可能多的对一些关键词保留了英文原文,如果你想看最纯正的英文原版教材却又看不懂,可以试着 ...

  4. Java官方教程(三-3)相等 关系和条件运算符(2020.12.20)

    前言 本文是橙子出于兴趣爱好对Java官方教程的尝试翻译,几乎每日更新,感兴趣的朋友可以关注一下橙子:翻译过程中尽可能多的对一些关键词保留了英文原文,如果你想看最纯正的英文原版教材却又看不懂,可以试着 ...

  5. Java官方教程Java Tutorial

    概述 The Java Tutorials have been written for JDK 8. Examples and practices described in this page don ...

  6. java 官方教程_Java编程入门官方教程(第7版)

    目录 第1章 Java基础 1.1 Java的起源 1.2 Java对Internet的贡献 1.2.1 Java简化了基于Web的编程 1.2.2 Java applet 1.2.3 安全性 1.2 ...

  7. python语言程序设计实践教程实验八答案_清华大学出版社-图书详情-《Java程序设计教程及实验指导》...

    前言 Java程序设计教程及实验指导Java是一门主流的面向对象的程序设计语言,是面向对象程序设计教学的主流语言.本书由有多年教学经验的专业教师编写,分为教程以及实验与课程设计两部分.教程部分从Jav ...

  8. 千锋Java高级教程+分布式+springcloud+微信支付课程

    课程目录: ├─千锋Java高级教程-cas单点登录(完结-8集) │ 01单点登录介绍 │ 02cas介绍 │ 03tomcat搭建https │ 04cas server搭建 │ 05Cas 配置 ...

  9. Java 变量作用域、构造方法官方教程

    文章目录 二.构造方法(Constructor) (1)官方教程解释构造方法 (3) this 的本质 ☆☆☆☆☆ 一.变量作用域 Java 中的变量有3种: ① 全局变量:被定义在类中(成员变量) ...

最新文章

  1. 20155222 第二周测试
  2. Windows下RStudio环境安装
  3. 如何进行无线网络中继设置
  4. TypeScript学习笔记2:数据类型
  5. 【Discuz!】去掉版面的右侧的“收藏本版”和“订阅”
  6. python是一种动态语言、这意味着_【python编程的优点是什么?难怪选择python的人越来越多了】- 环球网校...
  7. DDoS攻击愈演愈烈,反射攻击举足轻重
  8. se16 and include table entries into TR SAT trace - Gross time and Net time
  9. 使用Elasticsearch,Kafka和Cassandra构建流式数据中心
  10. ceph的读写性能测试
  11. 模板多个列表级联_Excel办公技巧:使用power query快速合并同一工作簿的多个工作表...
  12. Linux操作系统文件链接问题
  13. wget不是内部命令 windows_wget 不是内部或外部命令 - 卡饭网
  14. android7.1刷supersu,Android系统怎么刷SuperSU
  15. 用python爬取网页数据代码_python实现web页面数据抓取代码
  16. 31.Python中verbatim标签使用详解
  17. Python爬虫知网
  18. 记录基础学习第二_小项目_飞行棋小游戏
  19. ubuntu1704下安装wineQQ
  20. 04-ET框架的事件系统

热门文章

  1. Python基于PC版微信实现机器人
  2. eNSP模拟器路由无法启动,命令控制界面一直冒 #问题的解决方法
  3. 最浅显易懂的数据库索引讲解
  4. cps网店php源码,100%开源程序 PHP源码 页游联运系统 CPA+CPS
  5. TMS320F28335调用官方库进行FFT频谱分析
  6. ILSpy中baml转化为xaml的改进(五)
  7. 硬件描述语言Verilog学习(二)
  8. Mysql 数据库(一)
  9. 农行显示向百度服务器,百度与农行达成战略合作:共建智能银行
  10. postgresQL通过出生日期获取年龄