ad

阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_4.2 使用预定义类

admin 79 2023-10-25

【摘要】 本书摘自《Java核心技术》一书中第4章,第2节,作者是来自美国的凯·S.霍斯特曼(Cay S.Horstmann),由林琪、苏钰涵等译。

4.2 使用预定义类

在Java中,没有类就无法做任何事情,我们前面曾经接触过几个类。然而,并不是所有 的类都表现出面向对象的典型特征。例如, Math类。你已经看到,可以直接使用Math类的方 法,如Math.random, 而不必了解它具体是如何实现的,你只需要知道方法名和参数(如果有 的话)。这正是封装的关键所在,当然所有类都是这样。但Math类只封装了功能,它不需要 也不必隐藏数据。由于没有数据,因此也不必考虑创建对象和初始化它们的实例字段,因为 根本没有实例字段!

下一节将会介绍一个更典型的类——Date类,从中可以看到如何构造对象,以及如何调 用类的方法。

4.2.1 对象与对象变量

要想使用对象,首先必须构造对象,并指定其初始状态。然后对对象应用方法。

在Java程序设计语言中,要使用构造器 (constructor, 或称构造函数)构造新实例。构 造器是一种特殊的方法,用来构造并初始化对象。下面看一个例子。在标准Java 库中含一个 Date类。它的对象可以描述一个时间点,例如,"December 31,1999,23:59:59 GMT"。

阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_4.2 使用预定义类

构造器的名字应该与类名相同。因此Date类的构造器名为Date。 要想构造一个Date对 象,需要在构造器前面加上 new操作符,如下所示:

new Date()

这个表达式构造了一个新对象。这个对象被初始化为当前的日期和时间。

如果需要的话,也可以将这个对象传递给一个方法:

System,out.println(new Date());

或者,也可以对刚刚创建的对象应用一个方法。 Date类中有一个tostring方法。这个方 法将返回日期的字符串描述。下面的语句可以说明如何对新构造的 Date对象应用 tostring方法。

String s = new Date().tostring();

在这两个例子中,构造的对象仅使用了 一次。通常,你会希望构造的对象可以多次 使用,因此,需要将对象存放在一个变量中:

Date birthday = new Date();

图4-3显示了对象变量 birthday, 它引用 了新构造的对象。

在对象与对象变量之间存在着一个重要 的区别。例如,以下语句Date deadline;// deadline doesn't refer to any object

定义了一个对象变量deadline, 它可以引用Date类型的对象。但是, 一定要认识到:变量 deadline不是一个对象,而且实际上它也没有引用任何对象。此时还不能在这个变量上使用 任何 Date 方法。下面的语句

s = deadline.toString();// not yet

将产生编译错误。

必须首先初始化变量 deadLine, 这里有两个选择。当然,可以初始化这个变量,让它引用 一个新构造的对象:

deadline = new Date();

也可以设置这个变量,让它引用 一 个已有的对象:

deadline = birthday;

现在,这两个变量都引用同一个对象

(请参见图4-4)。

要认识到重要的一点:对象变量并没有

实际包含一个对象,它只是引用一个对象。

在Java中,任何对象变量的值都是

对存储在另外一个地方的某个对象的引

用。 new操作符的返回值也是一个引用。

下面的语句:

Date deadline = new Date();

有两个部分。表达式new Date()构造了一个Date类型的对象,它的值是对新创建对象的一个 引用。这个引用存储在变量 deadline 中。

可以显式地将对象变量设置为null,指示这个对象变量目前没有引用任何对象。 deadline = null;

if (deadline != null)

System.out.println(deadline);

我们将在4.3.6节更详细地讨论 null。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_3.10 数组
下一篇:阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_3.6.5 空串与 Null串
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×