这节教程将开始讨论对象的生命周期。包括怎样创建对象、怎样使用它以及在不使用它的时候将它从系统中清除。下面一个一个介绍:
4.1 对象的生命周期
在这一小节中你可以学到怎样创建和使用任何类型的对象,还讨论了当对象不再需要的时候系统怎样清除对象的。
典型的Java程序创建对象,对象之间的交互是通过发送消息来实现的。通过这些对象的交互,JAVA程序可以执行一个GUI、运行一个动画或者通过网络发送和接收信息。一旦对象已经完成了任务,它就被作为无用信息被回收,它的资源可以由其它对象回收利用。
以下是一个小的例子程CreateObjectDemo,它创建三个对象:一个是Point对象和两个Rectange对象,你需要这三个源程序才可以编译这个程序:
public class CreateObjectDemo {
public static void main(String[] args) {
//创建一个Point对象和两个Rectangle对象
Point origin_one = new Point(23, 94);
Rectangle rect_one = new Rectangle(origin_one, 100, 200);
Rectangle rect_two = new Rectangle(50, 100);
// 显示rect_one的宽、高以及面积
System.out.println("Width of rect_one: " rect_one.width);
System.out.println("Height of rect_one: " rect_one.height);
System.out.println("Area of rect_one: " rect_one.area());
// 设置rect_two的位置
rect_two.origin = origin_one;
// 显示rect_two的位置
System.out.println("X Position of rect_two: " rect_two.origin.x);
System.out.println("Y Position of rect_two: " rect_two.origin.y);
// 移动rect_two并且显示它的新位置
rect_two.move(40, 72);
System.out.println("X Position of rect_two: " rect_two.origin.x);
System.out.println("Y Position of rect_two: " rect_two.origin.y);
}
}
一旦创建了对象,程序就可以操作对象并将它们有关的一些信息显示出来,以下是这个程序的输出结果:
Width of rect_one: 100
Height of rect_one: 200
Area of rect_one: 20000
X Position of rect_two: 23
Y Position of rect_two: 94
X Position of rect_two: 40
Y Position of rect_two: 72
这一节使用这个例子来在程序中描述对象的生命周期。从这你可以学到怎样编写代码来创建、使用对象以及系统怎样将它从内存中清除的。
4.1 对象的生命周期
下面主要分成几部分来讨论:
1. 创建对象
- 使用对象
- 清除没有使用的对象
4.1.1 创建对象
众所周知,可以从类来创建对象。下面的几条语句都是用来创建对象的,它们都是来自上面程序CreateObjectDemo程序:
Point origin_one = new Point(23, 94);
Rectangle rect_one = new Rectangle(origin_one, 100, 200);
Rectangle rect_two = new Rectangle(50, 100);
上面第一条语句从Point类创建了一个对象,而第二条和第三条语句是从Rectangle类众创建了对象。但是每条语句都有三部分组成:
1. 声明:Point origin_one、Rectangle rect_one以及Rectangle rect_two都是变量的声明,它们的格式是类型后加变量名。当你创建一个对象的时候,你不必声明一个变量来引用它。然而,变量生命经常出现在创建对象代码的相同行上。
- 实例化:new是JAVA运算符,它可以创建新的对象并且为对象分配了内存空间。
- 初始化:new运算符后跟着一个构造函数的调用。比如Point(23,94)就是一个Point类的构造函数的调用。这个构造函数初始化了这个新对象。
下页也对这几个部分逐个介绍:
4.1.1.1 声明一个变量来引用对象
从前面的教程,你应该知道了如何声明一个变量了,你可以这样来编写:
type name
其中type是数据类型,而name是变量名。
除了原始类型(比如int和boolean),JAVA平台还直接提供了类和接口也是数据类型。这样为了声明一个变量来引用对象,你可以使用类或者接口的名字作为变量的类型。下面的例程使用了Point和Rectangle类作为类型来声明变量:
Point origin_one = new Point(23, 94);
Rectangle rect_one = new Rectangle(origin_one, 100, 200);
Rectangle rect_two = new Rectangle(50, 100);
声明没有创建新对象。Point origin_one代码没有一个新的Point对象,它只是声明一个变量orgin_one,它将用来引用Point对象。这个引用暂时是空的直到被赋值了。一个空的引用就是一个NULL引用。
4.1.1.2 实例化对象
为了创建一个对象你必须用new来实例化它。New运算符是通过为新对象分配内存来实例化一个类的。这个new运算符需要一个后缀参数,即构造函数的一个调用。构造函数的名字提供了要初始化类的名字。构造函数初始化了新的对象。
New运算符号返回一个引用给它创建的对象的。通常,这个引用被赋值为适当类型的变量。
4.1.1.3 初始化对象
以下是Point类的代码:
public class Point {
public int x = 0;
public int y = 0;
//一个构造函数
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
这个类包含了一个构造函数。你可以识别这个构造函数因为它跟类的名字是相同名字的,它没有任何的返回类型。这个在Point类中的构造函数有两个整型参数,它是由代码(int x, int y)来定义的。下面的整数23和94就是这个参数的数值:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有