1.try catch finally
不管发生了什么,finally总会被执行,如果try里有return,在return之前会把finally里的代码执行完,再跳回到try里return,但如果finally里也有return,那就会直接在finally里return。
2.重载和重写
重载是在同一类里,同名不同参的方法,通过参数不同来区分方法,但返回类型无法用于区分。
重写是子类继承父类之后重写父类的方法,必须同名同参同返回类型同作用域同异常处理。静态类无法被重写,如果子类中有父类中同名同参的方法,那只是子类自己的方法,与父类无关。
3.hash table/map
这个我也没太懂,说是table是同步的,而map是非同步的,在多线程并发的情况下,可以直接使用table,但是用map则要自己增加同步机制。由于本人没有用Java写过多线程,所以并不太懂。(具体参考这篇博客 )
4.extends和implements
extends是继承父类,implements是实现接口。其实这个问题就相当于是父类和接口有什么区别。
很明显的一点是,一个类只能继承一个父类,但可以实现很多个接口。
父类是一个类,有其自身的属性和方法,继承之后什么都不写也可以直接用。
接口里面则只有属性和抽象类而没有具体实现,相当于一个框架,实现接口时必须实现所有方法。
5.final static
final的意思是不可改变,也就是说一旦被赋值,就不可以改变,也不可以被子类继承。
static是静态,如果一个类里有static方法,那么这个方法被所有实例共享,且不生成副本。不需要实例化就可以使用。其实是在加载这个类的时候static方法就被加载了。
(一直很疑惑究竟什么时候该用static)