共计 1424 个字符,预计需要花费 4 分钟才能阅读完成。
工作了小半年了, 技术上感觉没有什么晋升, 以前学的也都忘记了好多, 当前跳槽都没有底气 … 所以这次温习一下.
谈谈你对 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: 类在编译的时候是存在的, 运行的时候却找不到