扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:JAVA中文站 2007年8月27日
关键字:
垃圾回收
有些语言,比如C++,动态分配对象必须使用delete运算符手工释放它。而JAVA则采用了不同的方法,自动的重新分配内存。完成这种功能的技术叫垃圾回收。垃圾回收是这样工作的:当一个对象的引用不存在时,这个对象就被认为不再需要的了,它所占用的内存就可以被回收。这时候不需要像C++那样明确的清楚对象。垃圾回收只是在程序执行过程中偶然发生。对于那些已不再使用但仍旧存在的一个或多个对象来说,垃圾回收不会因此而简单的发生。此外,不同的JAVA运行系统采用不同的垃圾回收方法,但对于大多数情况来说,编写程序时不用过多的考虑这些。
finalize()方法
在删除一个对象之前,有时需要确认某些动作已经完成。例如:如果一个对象已经获得了某些系统资源,比如一个文件句柄,那么在删除该对象之前需要确定该资源已经被释放。JAVA提供了一种叫做终止的机制对这些情况进行处理。使用终止可以定义指定的动作,这个动作在一个对象刚好被垃圾回收器回收时发生。
为类增加一个终止,只需简单的定义finalize()方法。无论何时对那个类中的对象进行回收时,JAVA的运行系统都会调用这个方法。在finalize()方法中指定在一个对象被销毁前所必须要执行的那些动作。finalize()方法的通常形式如下:
protected void finalize()
{
// finalization code here
}
理解finalize()只在垃圾回收前被调用是非常重要的。例如,当对象超出作用域时,finalize()就不会被调用。这意味着不会知道finalize()将会在什么时候执行。因此,程序中应当提供由其它对象使用的释放系统资源的方法。对于一般的程序操作不必依赖finalize()。
方法重载
在JAVA程序中,只要所声明的参数不同,就可以在同一个类中定义两个或更多具有相同名字的方法。当这样做时这些方法就称为被重载,这个过程称为方法重载。当一个重载的方法被调用时,JAVA使用参数的类型和个数取决于实际调用哪一个被重载的方法。因此,重载的方法在参数类型和数量上肯定不会一样。重载的方法可以有不同的返回类型,仅单独使用返回类型不能辨别是哪个方法。当JAVA程序遇到调用重载方法时,它仅仅执行与调用
参数相匹配的那个方法。
除一般的方法重载外,也可以重载构造函数。下面举一个方法重载的例子:
// Demonstrate method overload 下面类说明了重载的test()方法。 |
参数传递
通常一种计算机语言有两种向子程序传递参数的方法。第一种方法叫做值调用(call-by-value)。这种方法将一个参数的值复制到子程序的形式参数里。因此,子程序参数的变化并不会影响到用于调用的参数。第二种参数传递的方法叫做引用调用(call-by-reference)。在这种方法中,把一个参数(不是参数的值)的引用传递给形式参数。在子程序里,这个引用用于对调用中指定的实际参数进行访问。这就意味着形式参数的变化会影响到用于调用子程序的参数。JAVA根据传递的内容使用这两种方法。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者