工作半年了,感觉技术上没什么提升。很多以前学过的东西都忘记了,对以后换工作也没有信心……所以这次来复习一下。说说你对Java平台的理解?“Javaisinterpretationandexecution”,这句话对吗?Java本身是一种面向对象的语言,最显着的特点是:跨平台特性和垃圾收集。并不是说Java语言可以跨平台,而是说不同平台可以运行Java语言环境(JRE)“Java被解释执行”这个说法不太准确。编译执行类似英文全文一次性翻译;口译和执行类似于同声传译。一般来说,我们编写的源代码(.java)会被编译器编译成字节码文件(.class)。运行时,JVM解释编译器将字节码转换成机器码。但是常见的JVM如HotspotJVM提供了JIT(Just-In-TIme)编译器,也叫动态编译器。JIT可以在运行时将热点代码编译成机器码,也就是一些热点代码被编译执行而不是被解释(混合模式)。请比较异常和错误。另外,运行时异常和一般异常有什么区别?两者都继承了异常处理的基类Throwable类。异常是程序正常运行中可以预料到的意外情况,可以而且应该被捕获。错误是不太可能发生的正常情况。大多数Error都会导致程序处于异常且不可恢复的状态,此时并不方便,也不需要捕获。异常分为可检查异常和不可检查异常。可检查异常是必须由源代码显式捕获和处理的异常。它们将在编译期间被检查而不是被捕获。它无法编译。未经检查的异常也称为运行时异常,如NullPointerException、ArrayIndexOutOfBoundsException,通常是可以通过编码避免的逻辑错误。编译时不强制处理try-catch代码段,会产生额外的性能开销,或者从另一个角度说,往往会影响JVM优化代码,所以建议只捕获必要的代码段,try不要将整个代码包装在一个大的尝试中。业务流程使用if/elseThrow和Throws注意位置try-with-resources和多个catchtry(BufferedReaderbr=newBufferedReader(…);BufferedWriterwriter=newBufferedWriter(…)){//Try-with-resources//dosomething}catch(IOException|XEceptione){//多次catch//处理}throwearly原则如果filename为null,可以提前抛出publicvoidreadPreferences(Stringfilename){Objects.requireNonNull(文件名);//...执行其他操作...InputStreamin=newFileInputStream(filename);//...读取首选项文件...}NoClassDefFoundError和ClassNotFoundExceptionNoClassDefFoundError是错误(Error),而ClassNotFoundException是异常(Exception)。ClassNotFoundException:Class.forName在反射中找不到类。NoClassDefFoundError:该类在编译时存在,但在运行时找不到
