Java基础知识回顾,还记得吗?


Java基础知识回顾,还记得吗?文章插图
面向对象与面向过程的区别首先面向过程和面向对象的语言没有具体的性能高下之分 , 要依据每种语言的设计来做参考 。 个人认为面向过程和面向对象的最大区别在于:面向过程的语言是结构化的 , 面向对象的语言是模块化的 。 模块化的代码比结构化的代码更易于维护 , 复用与扩展 。
OracleJDK与OpenJDK的区别OpenJDK是基于Sun捐赠的HotSpot的源代码开发的 , 是开源的 。 OracleJDK是Oracle对JDK商业化版本 , 由Oracle发布并维护 , 因此OracleJDK比OpenJDK更可靠 。
Java与C++的异同

  • Java和C++都是基于面向对象的语言 。
  • Java不提供指针来访问内存 , C++运行指针访问内存 。
  • 垃圾回收机制 。 Java无需开发者手动释放内存 , 因为Java由垃圾回收机制自动回收内存;C++则需要开发者手动释放内存 。 因此Java在内存管理上相对C++更安全 。
  • Java不支持多继承 , 而C++支持 。
JVM、JDK和JRE的区别
  • JVM:(java virtual machine)是java虚拟机
  • JRE:(java runtime environment)是java运行时环境
  • JDK:(java development kit)是java开发工具包 , 不仅包含来jre和jvm , 还提供来javac编译器和javadoc等其他开发所需工具
Java语言的特点
  • 面向对象
  • 平台无关性 , 也就是跨平台(依靠JVM)
  • 垃圾回收机制(GC)
  • 支持多线程
  • 支持便捷的网络编程
  • 编译和解释(JIT)
  • 安全
面向对象的特征面向对象的三大特征:封装、继承、多态 。
  • 封装:封装是隐藏对象属性和实现细节 , 只对外提供可访问或修改的接口的技术 。 封装的目的是为了简化编程和增加程序的安全性 , 使得使用者无需了解对象的具体实现细节 。
  • 继承:继承是在已存在的类上定义新的类的技术 。 在Java中 , 已存在的类被成为基类(父类) , 新的类叫派生类(子类) 。 子类拥有父类所有属性、方法 。 但是子类对父类中私有的方法或属性并不拥有 , 并不能访问和使用 。 继承的目的主要是为零代码的复用 。
  • 多态:多态指的是相同类型的对象 , 调用其相同的方法 , 参数也相同 , 但是它的表现形式也就是结果不同 。 多态的目的是为了程序的可扩展性和维护性 。 在java中可以使用继承和接口2大特性实现多态 。
重载和重写的区别个人认为重载和重写完全没有可比性 , 不知道为啥老有人喜欢拿图吗做笔记 。
  • 重载:重载是描述一个类中有多个方法名相同的方法 , 但是它们的参数、类型、返回值、参数顺序可能不同 , 表现形式也就不同 。
  • 重写:重写是描述子类对父类的某个方法的逻辑进行重新编写 , 但重写的只是方法的内容 , 方法名、参数、类型、顺序、返回值都不变的 。
接口和抽象类的区别
  • 接口需要被实现 , 而抽象类是需要被继承的 。
  • 接口里的方法都是公共抽象的 , 而抽象类几允许抽象也允许非抽象的方法(在JDK8中 , 接口被允许定义defalut方法 , JDK9中还允许定义private私有方法) 。
  • 一个类允许实现多个接口 , 但只允许继承一个抽象父类 。
  • 接口是对类的规范 , 规范的是行为能力 。 而抽象类是对类的抽象 , 抽象的是逻辑 。
Object类方法有哪些?
  • getClass
  • equals
  • hashCode
  • toString
  • wait
  • wait(long):让当前对象进入TIMED_WATING状态
  • wait(long,int):让当前对象进入TIMED_WATING状态
  • notify
  • notifyAll
  • clone
  • finalize
静态属性方法和成员属性方法区别静态属性和方法属于类Class , 而成员属性和方法属于实例化的对象 。