一、Java一个类的构造方法、初始化代码块、静态初始化代码块在继承中的执行顺序:
(1)静态初始化代码块 > 初始化代码块 > 构造方法
(2)父类 > 子类
综合下来的顺序便是:
-
父类静态初始化代码块
-
子类静态初始化代码块
-
父类初始化代码块
-
父类构造方法
-
子类初始化代码块
-
子类构造方法
值得注意的是:静态资源是类第一次加载的时候就会进行初始化!
二、如何实现(type1)编码字节流转换为(type2)编码字节流(byte[] src,dst):
答案:dst = new String(src,"type1").getBytes("type2");
三、请列举出四个Java会抛InterruptedException(线程中断异常)的方法:
-
java.lang.Object类的 wait() 方法
-
java.lang.Thread类的 sleep() 方法
-
java.lang.Thread类的 join() 方法
-
java.util.concurrent.CyclicBarrier类的 await() 方法
四、Object类包含哪些方法:
-
clone():创建并返回此对象的一个副本;
-
equals(Object obj):只是其他某个对象是否与此对象“相等”;
-
finalize();当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法;
-
getClass();返回此Object的运行时类;
-
notify();唤醒在此对象监视器上等待的单个线程;
-
notifyAll();唤醒在此对象监视器上等待的所有线程;
-
hashCode();返回该对象的哈希码值;
-
toString();返回该对象的字符串表示;
-
wait();在其他线程调用此对象的notify()方法和notifyAll()方法之前,导致该线程等待;
五、HashMap类的描述:
-
HashMap是一个散列表,它存储的内容是键值对(key - value)的映射关系;
-
HashMap内部的数据是无序存储的;
-
HashMap的键和值都可以为null;
-
HashMao继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口;
-
HashMap的实现不是同步的,因此它不是线程安全的;
六、方法重写和重载的区别:
方法重载:
-
方法名一定要相同
-
方法的参数表必须不同,包括参数的类型和个数
-
方法的返回类型和修饰发可以相同,也可以不同
-
可以抛出不同的异常。
-
出现在一个类中
方法重写:
-
父类方法的参数列表必须完全与被子类重写的方法的参数列表相同,否则不能称其为重写而是重载;
-
父类的返回类型必须与被子类重写的方法返回类型相同,否则不能称其为重写而是重载;
-
由于父类的访问权限修饰符的限制一定要大于被子类重写方法的访问权限修饰符,而private权限最小,所以如果某一个方法在父类中的访问权限是private,那么就不能在子类中对其进行重写。如果重新定义,也只是定义了一个新的方法,不会达到重写的效果。
-
继承过程中如果父类当中的方法抛出异常,那么在子类中重写父类的该方法时,也要抛出异常,而且抛出的异常不能多于父类中抛出的异常(可以等于父类中抛出的异常)。换句话说,重写方法一定不能抛出新的检查异常,
-
出现在继承(extends)和实现(implement)中