一、基础
面向对象
面向对象概念
面向对象 (Object Oriented,OO) 是软件开发方法
- 对象:万物皆对象,对象可以是具体的事物,也可以是抽象的规则、计划或事件。
- 对象的状态和行为:状态代表数据,行为代表方法。
- 类(数据类型):具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。类的具体化就是对象,对象是类的实例。类具有属性(对象状态的抽象)和操作(对象行为的抽象)
- 类的结构:世界上存在若干类,这些类之间存在关系,通常存在两种主要的结构关系。⒈一般 - 具体结构(分类结构,”is a” 关系)⒉整体 - 部分结构(组织结构,”has a” 关系)
- 消息和方法:对象之间进行通信的结构叫做消息。对象接收到消息,根据消息说明去调用方法(消息应说明执行对象、方法、参数)。方法有方法名、返回值、参数、方法体。
面向对象特征
- 封装:封装对象的属性和行为,并设置访问权限(支持方法重载)
- 继承:继承父类的属性和行为,提供复用性。(单继承,接口多继承;支持方法重写)
- 多态:基于封装、继承(重写)、父引用指向子对象;允许不同的对象对同一消息做出不同反应;编译期绑定(成员变量、静态变量、静态方法)、运行期绑定(成员方法);方法多态(重写,重载)、引用多态(向上造型);
- 抽象:表示对问题领域进行分析、设计中得出的抽象的概念,基于 abstract 关键字,必须被子类继承重写,无法私有化(private)、静态化(static)、最终化(final)。
JAVA
JAVA 体系
- JAVASE(桌面程序)
- JAVAEE(网站服务)
- JAVAME(手机嵌入式)
- JAVACard(Java 小程序 Applets)
JAVA 特点
- 简单性:单继承、自动拆装箱、简化内存管理(引用替代指针,提供自动 GC 垃圾回收器)…
- 移植性:Java 先编译成字节码(中间码),由 JVM 来进行解释(二进制码)运行。
- 健壮性:强类型机制、异常处理、垃圾的自动收集等机制。
- 多线程:支持多线程
JAVA 发展史
- 1991 年 4 月:James Gosling 博士领导 Gree Project,推出 JAVA 前身(Oak 橡树)
- 1995 年 5 月 23 日:Oak 语言改名为 JAVA,并在 SunWorld 大会上正式发布 JAVA 1.0 版本,并提出 ”Write Once, Run AnyWhere” 口号。
- 1996 年 1 月 23 日:JDK 1.0发布,提供纯解释执行的 Java 虚拟机实现(Sun Classic VM)。代表技术:Java 虚拟机、Applet、AWT 等 …
- 1996 年 4 月:10 个最主要的操作系统供应商申明将在其产品中嵌入 Java 技术。
- 1996 年 5 月底:Sun 公司于美国旧金山举行首届 JavaOne 大会。
- 1996 年 9 月:已有大约 8.3 万个网页应用了 Java 技术来制作。
- 1997 年 2 月 19 日:JDK 1.1发布。代表技术:JAR 文件格式、JDBC、JavaBeans、RMI。Java 语法:内部类(Inner Class)和反射(Reflection)
- 1998 年 12 月 4 日:JDK 1.2-Playground(竞技场)发布。Sun 在这个版本中将 Java 体系 拆分为 3 个方向:J2SE(面向桌面开发)、J2EE(面向企业级开发)、J2ME(面向手机移动终端开发);代表技术 :EJB、Java Plug-in、Java IDL、Swing 等;Java 虚拟机:第一次 内置JIT(Just In Time)编译器(JDK1.2 曾并存 Classic VM、HoSpot VM、Exact VM,Exact VM 只在 Solaris 平台出现过;后两者是内置 JIT 编译器;之前版本 Classic VM 只能以外挂形式使用 JIT 编译器);Java 语法:添加 strictfp 关键字;Java API:Collections 集合类。
- 1999 年 3 月:JDK 1.2.1 发布。
- 1999 年 4 月 8 日:JDK 1.1 共发布 1.1.0 ~ 1.1.8 九个版本。从 1.1.4 之后,每个版本都有工程代号:Sparkler、Pumpkin、Abigail、Brutus、Chelsea
- 1999 年 4 月 27 日:HotSpot虚拟机发布。最初由 ”Longview Technologies” 小公司发布。1997 年被 Sun 公司收购。HotSpot 虚拟机发布时是作为 JDK1.2 的附加程序提供。后来成为 JDK 1.3 及之后所有版本的 Sun JDK 的默认虚拟机。
- 1999 年 7 月:JDK 1.2.2 发布。
- 2000 年 5 月 8 日:JDK 1.3-Kestrel(美洲红隼)发布。Java API:数学运算、新的 Timer API 等;JNDI 作为一项平台级服务提供(以前仅是一项扩展);使用 CORBA IIOP 实现 RMI 的通信协议;改进 JAVA 2D(提供大量新的 Java 2D Api,新增 JavaSound 类库)。
- 2001 你那 5 月 17 日:JDK 1.3.1-Ladybrid(瓢虫)修正版本发布。自 JDK 1.3 开始,Sun 维持一个习惯:每隔两年发布一个 JDK 主版本,以动物命名,期间的各个修正版本则以昆虫作为工程名称。
- 2002 年 2 月 13 日:JDK 1.4-Merlin(灰背隼)发布。技术特性:正则表达式、异常链、NIO、日志类、XML 解析器和 XSTL 转换器等。
- 2002 年 9 月 16 日:JDk 1.4.1-Grasshopper(蚱蜢)修正版本发布。
- 2002 年期间:微软公司发布.NET Framework,无论是技术实现上还是目标用户都与 Java 有很多相近之处,给 Java 带来了很多讨论、比较和竞争对 Java 的发展进程影响很大。
- 2003 年 6 月 26 日:JDK 1.4.2-Mantis(螳螂)修正版本发布。
- 2004 年 9 月 30 日:JDK 1.5-Tiger(老虎)发布。语法特性:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach)等;Java 虚拟机:改进 Java 的内存模型(Java Memory Model,JMM);Java API:提供 java.util.concurrent 并发包等。
- 2006 年 11 月 13 日:JavaOne 大会上,Sun 公司宣布最终会将 Java 开源。
- 2006 年 12 月 11 日:JDK 1.6-Mustang(野马)发布。命名方式:终结 J2EE、J2SE、J2ME 命名方式,启用 Java SE6、Java EE6、Java ME6 命名方式;Java API:提供动态语言支持(通过内置 Mozilla JavaScript Rhino 引擎实现)、提供编译 API、微型 HTTP 服务器 API 等;Java 虚拟机:做了大量改进,包括锁与同步、垃圾收集、类加载等方面的算法。
- 2009 年 2 月 19 日:JDK 1.7-Dolphin(海豚)