此博客内容较为基础,如果你刚毕业或者准备应对学校的考试,可作为参考
本文章只限于JavaSE内容,如有错误或者漏洞还请各位前辈指出。
本文章想到哪写到哪,大体概括了java基础的易考问题。
对于刚毕业找工作的同学这些问题很有可能涉及
--------------------------------------------------------------------------------------------------------------------------------------------------------
1、java基本数据类型有8种: int 、short、 byte、 long ,float、double 、boolean、char;
分别有其对应的封装类,Integer、Short、Byte、Long、Float、Double、Boolean、Character。
此8种数据类型按照如上顺序四个一组记忆较为押韵。在记封装类时只要记住开头和结尾即可,其他全是开头字母大写。那么有可能被问到基本类型为什么要给他封装呢?这里可以看到,我们叫后面的为“基本类型的封装类”所谓类,就可以调用方法,其方法在封装类中。对于基本数据类型,我们是不能在其后用 "."的形式调用其操作方法的。而封装后,即可方便的执行一些操作。
2、此处再提一下,String不是一个数据类型。String是一个以Final修饰的类。既然是Final修饰,说明String类是不能被继承的。
关于Final,他可以修饰“类、 方法 、属性”分别表示:类不可被继承,方法不能被重写(但可以重载),属性值不可变(为常量)
String中提供各种对字符串的操作方法。
3、所有的类都是Object的子类。所有的类都有构造方法(包括抽象类和内部类)、Object类中提供以下方法:
toString() ;hashCode(); equals();notify();notifyAll(); wait();finalize()
4、类中的元素:类中可以存在 常量、变量、方法、内部类、初始化块、静态块、构造器、析构函数
这里对其部分成员解释一下
静态块:形式为:static{ ...}形式,静态块中的代码在类被加载时调用,且只调用一次,即,只在第一次new这个类的实例时调用,用其对静态变量赋值。
初始化块:形式为:{...}形式(无方法名,修饰符等)在类实例化时调用,每new一个对象调用一次。且在构造方法执行前执行。
finalize() 为析构函数,一般不需要手工重写,在此提到是为了区分于:final、 finally。此三者无任何关系,final刚才说过,为修饰符。finalize为Object类中继承而来的方法,用于在类被虚拟机垃圾回收之前执行一些操作,而finally为异常处理时最后执行的代码块。
5、说完了基本数据类型,我们来谈一下java中的集合。java中的集合可分为三:Set,List, Map
其中Set和List接口都继承自conllection接口。而Map接口则和conllection接口属于并列关系。
三者都有各自的实现类:
Set接口实现类:HashSet(无序)、LinkedHashSet(插入顺序)、TreeSet(有序)
List接口实现类:ArrayList 、LinkedList 、Vector(线程安全的)
Map接口实现类:HashMap(允许一个null键,多个null值)、LinkedHashMap(插入顺序)、TreeMap、Hashtable(线程安全的,不允许null的键和值)
Map中的key底层是Set,所以必须是唯一的
当类的实例存储在Set中时 重写类的 equals、hashCode方法,并实现comparable接口的compareTo方法
当类的实例存储在List中时 重写类的 equals方法
当类的实例作为键在Map中时 重写类的 equals、hashCode、方法,作为值时重写equals方法