程序设计语言的关键在于编译器,平台进而开发工具包JDK。
面向对象,无关平台,安全稳定,支持多线程,丰富的类库
核心机制:虚拟机,代码安全性检测,垃圾收集机制;
对象是对现实的抽象,类是对对象的抽象(模板);对象是类的实例,现实是对象的表达。这是一个升维的过程。属性是变量,行为是函数;这也是一种封装的方法,能够通过将属性和行为封装在类,从而允许程序定义很多类;而且这种方法隐藏其类的细节,让用户只能通过受保护的接口来访问这个类;而继承允许子类在父类的基础上有一定的创新,能够更好的进行抽象与分类,提高代码的重用率和可维护性;多态性允许对对象的识别来进行不同的细节实现。本质上是多层次的交互,认为客观世界可以如同四元素说或者五行学说一样由有限的对象组合而成,于是可以在这个抽象的层次考虑对象类,类的属性和方法,类之间的关系以及对象之间的信息交互(调用方法)来进行程序设计,从而解决一定的问题。
程序=数据结构+算法
数据结构是一组有特定关系的数据的存储与处理方式如集合结构线性结构树形结构图型结构,能够通过数据之间的逻辑关系,以及这种关系对应的操作来存储某种逻辑关系(存储实现)并实现的(运算实现),算法就是一定存储方式下对应的每一种操作的组织形式,是基本操作创建,清除,插入,删除,搜索,更新,访问,遍历的选择性组合
数据结构的存储实现包括数据元素的存储以及数据元素之间的关系的存储,具体的物理实现是存储结点,数据元素之间的关系的存储,以及附加信息如链表中的头结点。 因此关系的存储是重点,主要有顺序存储(数组实现),链接存储(如单链表),哈希存储方式,索引存储方式
编译器生成的目标代码本质上是数学意义上的构造函数;
算法的优劣以复杂度来衡量,与计算机系统的性能无关,运行时间与问题规模和输入数据的分布相关
提高算法的效率能够在有限的资源达成更广泛目标,即对问题规模增长相对不敏感,运算量与问题规模之间的关系就是复杂度,其度量是算法在给定的输入下共执行了多少次标准操作;并将它作为算法的计算量
多项式时间复杂度的关系: O(1) < O(logN) < O(N) <O(NlogN)< O(N2) < O(N3)
指数时间复杂度的关系:O(2N) < O(N!) < O(NN)