第四章 类和对象(6)

4.6 对象

        JAVA是一门面向对象的程序设计语言,对象是由类实例化而来的,所有问题都通过对象来处理。对象可以通过操作类的属性和方法来解决相应的问题,因此了解对象的产生、操作和消亡是十分必要的。本节就来讲解对象在Java语言中的应用。

        4.6.1 对象的创建

        在4.1节中曾经讲解过对象,对象可以被认为是在一-类事物中抽象出的某一个特例,程序开发人员可以通过这个特例处理这类事物出现的问题。在JAVA语言中,通过new操作符创建对象。前文在讲解构造方法时介绍过,每实例化个对象就会自动调用次构造方法, 实质上这个过程就是创建对象的过程。准确地说,可以在JAVA语言中使用now操作符调用构造方法创建对象。语法如下:

Test test = new Test();
Test test = new Test("a");

        test对象被创建出来时,就是一个对象的引用,这个引用在内存中为对象分配了存储空间。6.3 节中介绍过,可以在构造方法中初始化成员变量,当创建对象时,自动调用构造方法。也就是说,在Java语言中,初始化与创建是被捆绑在一起的。

        每个对象都是相互独立的,在内存中占据独立的内存地址,并且每个对象都具有自己的生命周期,当一个对象的生命周期结束时,对象就变成垃圾,由JAVA虚拟机自带的垃圾回收机制处理,不能再破使用(对于垃圾回收机制的知识将在4.6.4 节中进行讲解)。 

        4.6.2 访问对象的属性和行为

        用户使用new操作符创建一个对象后, 可以使用“对象类成员"来获取对象的属性和行为。前文已经提到过,对象的属性和行为在类中是通过类的成员变量和成员方法的形式来表示的,因此当对象获取类成员时,也相应地获取了对象的属性和行为。

        4.6.3 对象的引用

        在JAVA语言中,尽管一切都可以被看作是对象,但真正的操作标识符实质上是一个引用,那么引用在JAVA中是如何体现的呢?语法如下:

类名 对象的引用变量

类名 引用 = 对象的实体

people tom = new people();

        4.6.4 对象的销毁

        每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址需要要被回收。在其他语言中,需要用户手动回收废弃的对象。JAVA 拥有套完整的垃圾回收机制,用户不必担心废弃的对象会占用内存,垃圾回收器会自动回收无用却占用内存的资源。

        在学习垃圾回收机制之前,读者首先需要了解何种对象会被Java虚拟机视为“垃圾”。

        虽然JAVA的垃圾回收机制已经很完善,但垃圾回收器只能回收那些由new操作符创建的对象。某些对象不是通过new操作符在内存中获取存储空间的,这种对象无法被垃圾回收机制所识别。在JAVA中,提供了一个finalize(方法,这个方法是Obect类的方法,它被声明为protected, 用户可以在自己的类中定义这个方法。如果用户在类中定义了finalize()方法,在垃圾回收时会首先调用该方法,在下一次垃圾回收动作发生时, 才真正回收被对象占用的内存。

        需要明确的是,垃圾回收或finalize()方法并不保证一定会发生。如果JJAVA虚拟机内存损耗待尽,它将不会执行垃圾回收处理。

        由于垃圾回收不受人为控制,具体执行时间也不确定,因此finalize()方法也就无法执行。为此,JAVA提供了System.gc()方法来强制启动垃圾回收器,这与给120 打电话通知医院来救护病人的道理一样,主动告知垃圾回收器来进行清理。

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值