为什么Java可跨平台?为什么Java是解释与编译并存的语言?
这两个问题是可以同时解答的,关键词:先编译(.java–>.class)后解释(.class–>机器码)。先编译保证了解释器面临的都是统一规则的字节码,后解释保证了Java的可跨平台性(针对不同操作系统的特定映射)。
在解释部分,有两种提速策略:JIT和AOT,分别是即时编译以及提前编译,都是将.class–>机器码的映射存储起来避免重新解释。AOT无法解决动态代理任务,因为动态代理是在运行时从内存中生成并加载修改后的.class,AOT无法作用
Oracle JDK和Open JDK的区别?
Oracle JDK更稳定更有保障,但11及之后版本商用收费
Open JDK更新更快Bug更多,但完全开源
Java与C++的区别?
Java无指针(无法对内存地址加加减减)
Java类是单继承,只有接口可多重继承
Java有GC,可自动释放内存
Java只支持方法重载
java内存区与对应的存储内容
java常量池:四大类、各自包含的内容,加载的时机