Java语言的知识很是丰富。有些知识似曾相似,实则大相径庭。本文介绍Java语言几组混淆的知识。
第一组:final、finally和finalize?
阿情说:final和finally是Java语言中的关键字,前者用来修饰类、变量与方法,具有“终”或者说“的”特性,因而,被它修饰的类不可再继承,例如String、Math类,被它修饰的变量,实际上是常量变量了,其值不能再修改,被它修饰的方法,该方法不能再覆盖。后者使用于异常处理机制中,不管程序代码是否发生异常,其所构成的代码块一定要被执行,因而资源的回收、流的关闭都置于其里。finalize是Object类所定义的finalize()方法的方法名,方法的功能是在GC(垃圾收集器)将对象从内存中清除出去之前做必要的清理工作。Object类是所有的类的超类,因而所有类都具有finalize()方法,子类可以通过覆盖该方法以整理系统资源或者执行其他清理工作。
第二组:Collections和Collection?
阿情说:虽然Collections和Collection都是在java.util包里,但前者是一个类,该类完全在Collection进行操作或者返回Collection的静态方法组成,后者是一个接口,它是基本的集合接口,List和Set接口继承于它。
第三组:类、对象和引用?
阿情说:类是对象的抽象,对象是类的实例,引用是对象的名字,并能操作对象。面向对象设计与编程,也可以理解为面向类设计与编程。一切皆为对象,万事万物都是有对象构成,也可以理解认识世界,分门别类。
第四组:抽象类与接口?
阿情说:抽象类与接口是面向对象抽象特向的两个方面。前者表示abstract修饰的类,后者是一种特殊的抽象类。关于抽象类和接口,可以从语法差异性、设计理念差异性认识与理解。
第五组:Vector、ArrayList和LinkList?
阿情说:Vectot和ArrayList是基于数组方式的存储结构,按索引遍历方便快捷,但是不利于增加与删改操作,Vector里面的方法是同步方法,具有线程安全特性,但性能不如ArrayList,因而,根据具体需要做出合理选择。LinkList是基于链表是存储结构,增删较为便利,但遍历有些低效。
第六组:Hashtable和HashMap?
阿情说:虽然两者都实现了Map接口,即把的key映射到特定的value上。其差异在于:1)HashMap没有排序,允许一个null键和多个null值,而Hashtable则不允许。2)HashMap把Hashtable的contains方法去掉了,改作containsValue()和containsKey()方法。3)Hashtable继承自Dictionary类,HashMap是Java1.2引进的Map接口的实现。4)Hashtable的方法是同步的,而HashMap的方法不是。
第七组:wait()和sleep()、notify()和notifyAll()?
阿情说:wait()是Object类的方法,在其他线程调用此对象的notify()和notify()方法前,导致当前线程等待,sleep()是Thread类的方法,在指定的时间里让当前正在执行的线程休眠(暂停执行)。notify()和notifyAll()都是Object类的方法,前者表示唤醒此对象监视器上等待的单个线程,后者表示唤醒此对象监视器上等待的所有线程。
欢迎各位“看官”不吝赐教,在此先谢。后续逐一充实与完善。