对于习惯使用C和稍微接触过C++的我来说,刚开始学习Java,并没有感觉到有多么陌生,反而我是觉得面向对象编程(OOP)是多么的美妙,Java的语法是多么的清晰和简洁。
好了,不罗嗦了,上知识点。
首先介绍Java。
Java衍生于C++,底层为C\C++所写(类似于python和C),Java从C\C++语言继承了许多成份,但Java 语法是C++ 语法的一个“ 纯净” 版本,这里没有头文件、指针运算(甚至指针语法)、 结构、联合、操作符重载、虚基类等特性,增加了垃圾回收器功能、泛型编程等特性。
Java“白皮书”的关键术语,其设计者归结为:①简单性 ②面向对象 ③分布式 ④健壮性 ⑤安全性 ⑥体系结构中立 ⑦可移植性 ⑧解释型 ⑨高性能 ⑩多线程 ⑪动态性。
Java两种核心机制:Java虚拟机(JVM)和垃圾收集机制。
简单说一下JVM:JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。我们用java语言编写的文件为.java文件,经IDE或dos窗口编译后为.class文件,.class为可执行文件,但.class文件不会直接与你的设备的操作系统交互,而是经JVM处理再交与实际操作系统。因此可以做到“一次编译,到处运行”,即为多平台性。
再来说对象。一直在说面向对象编程,那何为对象?抽象的说对象即为一个(任意量词)item,就是一个东西,具体的来讲,一个苹果、一把伞、一条狗、一匹马、一头牛等等,这些很具体的,可以说得出Ta是一个怎样的一个item。由此就可引入类的概念,类即为类型、类别、分类,比如说苹果、狗、马、牛等即为类,例如狗(按品种分类):哈士奇,萨摩耶,斗牛犬等。他们都有属于狗的共性(——类的属性和行为)。类与对象还是很容易区分的,而OOP的重难点是如何构造类,而不是创建对象。
面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。强调运用人在日常生活的思维逻辑中采用的思想方法与原则。很形象的例子就是“把大象装进冰箱”,下图即为面向对象编程和面向对象编程的程序架构,虽然面向过程看起来更简洁、直接,但相信我它的实现过程更为复杂。
传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。一旦确定了这些过程,就要开始考虑存储数据的方式。先要确定如何操作数据, 然后再决定如何组织数据, 以便于数据操作。
OOP 却调换了这个次序, 将数据放在第1位, 然后再考虑操作数据的算法。将一个完整的实现过程分解为很多对象的组合,是为“分而治之”,程序开发、维护、升级的难度可想而知是减少了很多。