Java编程思想(第五章)

来源:互联网 发布:mac原版系统镜像下载 编辑:程序博客网 时间:2024/06/08 10:21

在编程中变量的初始化是一个很重要的问题,往往就是不记得对变量进行初始化二产生许多的安全问题。

        Java参考了c++的构造器(constructor)做法来确保对象的初始化,创建对象的时候,如果其类有构造器,Java就会在用户有能力调用之前自动调用相应的构造器,从而保证了初始化的进行。构造器分为有参构造器和无参构造器(一般也叫默认构造器),Java中一个类可以有一个或者多个构造器,如果本身没有构造器在运行时虚拟机将自动添加一个默认的无参构造器,如果有了构造器(不管有参无参)虚拟机将不会再添加构造器。构造器的名称与类名相同,构造器不能有返回值(包括void)。在拥有多个构造器是我们可以在构造器里通过this关键字调用其他构造器,需要注意的是调用语句必须在构造器里面的第一行,所有一个构造器只能调用另一个构造器,不能同时调1个以上的构造器。

        在Java中一个类的方法可以有多个重载,方法的重载通过参数列表的不同来标识,参数列表的位置不同也可以实现方法的重载,但是我们一般不建议这样做,因为这样会让后面的代码维护变得更加困难。需要注意的是不能通过返回值的不同实现方法重载,因为在某些时候我们不需要关系方法的返回值是系统根本不知道我们需要调用的是哪个方法。

        在程序设计我们往往会忘记清理工作,Java为了减轻程序员的清理工作设计了一个垃圾回收机制。Java的垃圾回收机制完成了我们开发中大部分的垃圾回收清理工作,但是这不代表我们就不需要释放清理无用垃圾。Java中的垃圾回收有两种方式,第一种是“标志-清扫”方式,第二种是“停止-复制”方式。“标志-清扫”所依据的思路是从堆栈和静态存储区出发,遍历所有的引用,进而找出所有存活的对象,每当它找到一个存活对象就会给对象设置一个标志,此过程中不会回收任何对象。直到标志工作全部完成之后清理工作才开始。由此来看“标志-清扫”方式相对较慢。“停止-复制”顾名思义就是程序先停止运行,寻找所有存活的对像,把存活的对象复制到另外一个新堆,释放旧堆栈上的对象。由此可见堆栈的利用有所下降,工作量较大耗费的资源更多。因此在Java中,虚拟机将对内存实时监控,如果所有对象都很稳定,垃圾回收期的效率减低的话就切换到“标志-清理”方式,虚拟机会跟踪“标志-清理”的效果,如果堆空间出现很多碎片的时候就切换到“停止-复制”方式,这种自动适应的方式被称为“自适应的、分时的、停止-复制、标志-清理”式垃圾回收器。

       可变参数列表。可变参数方法一般用于参数个数不确定的情况下,一般来说可变的参数都直接或间接继承于Object类。


0 0
原创粉丝点击