工作了小半年了,技术上感觉没有什么晋升,以前学的也都忘记了好多,当前跳槽都没有底气...所以这次温习一下.
谈谈你对Java平台的了解?"Java 是解释执行",这句话正确吗?
Java 自身是一种面向对象的语言,最显著的个性:跨平台个性和垃圾收集.并不是说Java语言能够跨平台,而是不同的平台都有能够运行Java语言的环境(JRE)
"Java 是解释执行"这个说法不太精确。编译执行相似英文一次性全文翻译;解释执行相似同声传译. 通常来讲,咱们写的源代码(.java)会由编译器编译成字节码文件(.class).运行的时候,JVM解释器将字节码转换成机器码.
然而常见的JVM比方Hotspot JVM提供了JIT(Just-In-TIme)编译器,也叫动静编译器,JIT能在运行时将热点代码编译成机器码,这部分热点代码就是编译执行而不是解释执行了(混合模式).
请比照 Exception 和 Error,另外,运行时异样与个别异样有什么区别?
都继承了Throwable类,异样解决的基类.Exception是程序失常运行中能够预料到的意外状况,可能并且应该被捕捉.Error是失常状况下,不太可能呈现的状况,大部分Error会导致程序处于非正常的不可复原的状态,此时不便于也不须要捕获.
Exception分为可查看异样和不查看异样,可查看异样是源代码必须显式捕捉解决的异样,编译期会查看,不捕获就没法通过编译.不查看异样也叫运行时异样相似NullPointerException,ArrayIndexOutOfBoundsException,通常是能够编码防止的逻辑谬误.编译期间不会强制要求解决
try-catch 代码段会产生额定的性能开销,或者换个角度说,它往往会影响 JVM 对代码进行优化,所以倡议仅捕捉有必要的代码段,尽量不要一个大的 try 包住整段的代码.业务流程应用if/else
Throw和Throws留神地位
try-with-resources 和 multiple catch
try ( BufferedReader br = new BufferedReader(…); BufferedWriter writer = new BufferedWriter(…)) {// Try-with-resources // do something}catch ( IOException | XEception e) {// Multiple catch // Handle it}
throw early准则
如果filename是null就能提前抛出了
public void readPreferences(String filename) { Objects.requireNonNull(filename); //...perform other operations... InputStream in = new FileInputStream(filename); //...read the preferences file...}
NoClassDefFoundError和ClassNotFoundException
NoClassDefFoundError是一个谬误(Error),而ClassNotFoundException是一个异样(Exception).ClassNotFoundException:反射里的Class.forName找不到类.NoClassDefFoundError:类在编译的时候是存在的,运行的时候却找不到