Java语言特点
本专栏主要学习Java基础和Spring以及开发的一些其他工具等,三个月内迅速通过冲刺offer。
面向对象
封装:这个需要先提到开闭原则,开闭原则是指对扩展开放,但是对修改封闭。这个是Java编程思想的重要原则之一。封装既是对类进行保护,对外界而言其内部是隐藏的,暴露给外界的只是提供可访问的方法。
- public:对外完全公开。
- protect:只对同一个包中的类或子类公开,弱于public。
- default:只对同一个包公开,如果接口中用了该修饰符修饰,那么实现类不需要实现该方法(除非实现的多个接口都有同名的default方法)。
- private:不对外公开,只能在内部访问,子类可以通过getter和setter等方法访问父类私有属性。
继承:继承增强了代码的复用能力,一般以接口、抽象类、(默认实现类、)实现类这样的结构。注意重载和重写的区别。
多态:这个比较抽象,比如重载就是类内部多态的体现,重写是子类和父类之间的多态。借助多态可以增强程序可拓展性和通用性。
跨平台
Java最大的优势之一就是跨平台,可以在各种操作系统中通过Java虚拟机运行。本人对Java是编译型语言还是解释型语言没有明确的答案。
编译阶段将使用javac命令生成.java文件的字节码文件(.class文件),然后将字节码文件放到JVM(Java虚拟机)中运行,但是与C++一次编译即可运行不同,运行前需要解释为二进制码才可以真正的运行。
多线程、可靠性、高效性
这里暂时先不详细介绍多线程机制,Java内部提供了多线程支持,不需要调用操作系统的多线程。
Java自身拥有异常处理机制和内存管理机制,当程序运行过程中发生异常情况时,程序会抛出封装错误信息的异常。抛出异常指的是异常对象,这些对象都继承了Throwable,大概有Error和Exception两种大类。
&emps;通过Just In Time将热点代码直接编译成与操作系统对应的机器码,减少编译次数(编译时如果是热点代码则不会经过解释器,而是会进入JIT,由JIT编译的字节码生成的机器码会被保留)。
网络编程
Java支持网络编程,这里不做详细介绍,它从语言上提供对网络程序的支持,通过网络类以及JVM实现了跨平台的网络库。
JVM、JDK、JRE
JVM:是运行Java字节码的虚拟机,在不同的操作系统上对相同的字节码进行“解释”,它是Java语言跨平台的关键所在。
JDK:全称Java Development Kit,它是功能齐全的Java SDK,它包含了JRE、编译器javac、文档注释工具javadoc、调试器jdb等。
JRE:全程Java Runtime Environment,它是Java运行环境。JRE仅包含Java运行时环境和必要的库,而JDK包含了JRE和javac、javadoc等工具。
JIT与AOT
AOT全称Ahead Of Time,运行前编译,与JIT相反,主要区别在于是否在“运行”的过程中进行编译。
- JIT优势:
- 实时生成最优字节码
- 需要动态链接时,必须使用JIT
- 根据内存实际占用调整,内存利用更合理 - JIT缺陷:
- 需要占用额外资源进行编译 - AOT优势:
- 运行前编译,避免编译消耗性能
- 显著提升程序启动速度 - AOT缺点:
- 不支持动态特性,例如CGLIB动态代理,在运行时直接在内存中生成并加载修改后的字节码文件。
一个具有注脚的文本。[^1]
参考链接: JavaGuide