为什么选择Java,其优势在哪儿?
我的项目是 web 应用场景,Java 在这方面生态非常成熟了,有很多开源框架可用,比如 springboot、spring、mybatis等等,除此之外, Java 语言还有下面这些优势:
-
跨平台性:Java 通过 Java 虚拟机(JVM)来实现跨平台。Java 源代码被编译成字节码(.class 文件),字节码可以在任何安装了 JVM 的操作系统上运行。例如,一段 Java 程序在 Windows 系统上编译生成字节码后,无需修改就可以在 Linux 系统或者 macOS 系统的 JVM 上运行。
-
面向对象特性:Java 是一种纯粹的面向对象编程语言,支持封装、继承和多态等 OOP 特性。封装允许将数据和操作数据的方法封装在一个类中,隐藏内部实现细节,提高代码的安全性和可维护性。继承使得子类可以继承父类的属性和方法,实现代码的复用。多态则允许不同的子类对象对相同的方法调用做出不同的响应,增强了程序的灵活性。
-
内存管理:Java 有自动的垃圾回收机制。GC 会自动检测和回收不再被使用的对象所占用的内存空间,开发者不需要手动释放内存。例如,当一个对象没有任何引用指向它时,GC 会在适当的时候回收该对象占用的内存。
对面向对象的理解?
面向对象是一种编程范式,它将现实世界中的事物抽象为对象,对象具有属性(称为字段或属性)和行为(称为方法)。面向对象编程的设计思想是以对象为中心,通过对象之间的交互来完成程序的功能,具有灵活性和可扩展性,通过封装和继承可以更好地应对需求变化。
Java面向对象的三大特性包括:封装、继承、多态:
-
封装:封装是指将对象的属性(数据)和行为(方法)结合在一起,对外隐藏对象的内部细节,仅通过对象提供的接口与外界交互。封装的目的是增强安全性和简化编程,使得对象更加独立。
-
继承:继承是一种可以使得子类自动共享父类数据结构和方法的机制。它是代码复用的重要手段,通过继承可以建立类与类之间的层次关系,使得结构更加清晰。
-
多态:多态是指允许不同类的对象对同一消息作出响应。即同一个接口,使用不同的实例而执行不同操作。多态性可以分为编译时多态(重载)和运行时多态(重写)。它使得程序具有良好的灵活性和扩展性。
继承和多态有什么区别?
-
继承主要是一种类与类之间的关系,是代码复用的一种机制。它允许创建一个新的类(子类),这个子类可以继承父类的属性(成员变量)和方法。子类是对父类的一种扩展,它可以在父类的基础上添加新的属性和方法,也可以修改父类中原有的方法。例如,有一个 “动物” 类作为父类,它有属性 “体重” 和方法 “进食”。然后 “猫” 类作为子类继承 “动物” 类,除了继承 “体重” 属性和 “进食” 方法外,还可以添加新的属性如 “毛色”,新的方法如 “抓老鼠”。
-
多态是强调的是同一个行为(方法)在不同对象中有不同的实现方式。多态是通过方法重写(在继承关系中)或者接口实现来体现的。例如,有一个 “交通工具” 接口,定义了 “移动” 方法。“汽车” 类和 “自行车” 类都实现了这个接口,它们对 “移动” 方法有不同的实现,汽车是通过发动机驱动车轮移动,自行车是通过脚蹬使车轮转动来移动。
Java的垃圾回收机制?
Java 的垃圾回收负责回收那些不再被程序使用的对象所占用的内存空间,使程序员不需要手动释放内存,从而避免了因手动内存管理不当而导致的内存泄漏和悬空指针等问题,常见的垃圾回收算法如下:
-
标记-清除算法:标记-清除算法分为“标记”和“清除”两个阶段,首先通过可达性分析,标记出所有需要回收的对象,然后统一回收所有被标记的对象。标记-清除算法有