目录
2. Java 是 C++--(Java 在 C++ 基础上开发的)
一、Java的历史与发展
→ Java 之父:James Gosling
→ Java 的出现:Sun (Stanford University Network)
→ Java 使早期网页能够运行程序:Internet 发展中的第二次飞跃
→ Java 编译器:1995年,Sun 公司发布第一版Java语言编译器 jdk 1.0
→ Java 的版本:SE 标准版(桌面),EE 企业版(网络),ME 微型版(手机)
→ 2010年 Oracle 并购 Sun;2014年发布 JDK 1.8 (java 8)
二、Java 语言的特点
Java 首先是一种编程语言。
1. Java 语言的几个基本特点:
→ 简单易学(比 C++ 易学)
→ 平台无关性(跨平台性,与 C++ 不同)
→ 纯面向对象(不会把方法定义在对象之外)
→ 安全稳定(进行安全检查,不容出出现内存溢出等情况)
→ 支持多线程
→ 丰富的库提供了大量的类以满足网络化、多线程、面向对象系统的需要(语言包、实用程序包、图形用户界面、网络包 I/O包)
→ 可以开发各种各样的应用(网络应用、可视化应用、数据库、网络、多媒体)
2. Java 是 C++--(Java 在 C++ 基础上开发的)
→ 无直接指针操作(底层实现:引用、对象,类似于指针)
→ 自动内存管理(系统自动回收,不用 delete)
→ 数据类型长度固定(跨平台的要求,和 C++ 的 int 不一样)
→ 不用包含头文件
→ 不支持宏定义
→ 不包含结构体和联合体
→ 不用多重继承(C++ 一个类继承很多类,Java 有接口)
→ 无类外全局变量(纯面向对象)
→ 没有 goto 语句
三、Java 的运行机制
1、Java 三种核心机制
→ Java 虚拟机(JVM)
→ 代码安全检测(Code Security)
→ 垃圾回收机制(Garbage Collection)
2、Java 程序的编译与运行
→ 源程序 src.java(我们写的代码)
→ 字节码 src.class (用 javac 命令编译后,得到 bytecode,与平台无关)
→ 运行 java 命令(虚拟机执行字节码 JVM for Unix... 等等)
3、Java 虚拟机 JVM
→ Java 虚拟机:在一台计算机上有软件或硬件模拟的计算机
→ Java 虚拟机规范定义了:指令集、寄存器集、类文件结构等等
4、Java 运行环境 JRE
→ Java 运行环境 JRE = JVM + API(Lib)
→ JRE 运行程序时的三项主要功能:加载代码 + 校验代码(Java是安全的)+ 执行代码
5、Java 的自动垃圾回收
C/C++ 无自动垃圾回收:程序员负责回收无用内存;Java 语言有自动垃圾回收:
→ 系统级线程跟踪存储空间的分配情况
→ 在JVM空闲时 检查并释放那些钱可以被释放的存储器空间
→ 程序员无须也无法精确和干预该回收过程
6、Java 开发工具包 JDK
→ Java 开发工具包:JDK = JRE + Tools;JRE = JVM + API
→ Java 工具:javac 编译器;java 执行器;javadoc 文档生成器;jar 打包器;jdb 调试器
四、面向对象的程序设计
1. 对象的概念
任何事物都是对象,对象有两方面的含义:
→ 在现实世界中,对象是客观世界中的一个实体
→ 在计算机世界中,对象是一个可标志的存储区域
2. 类的概念
→ 类 class 是具有共同属性和行为的对象集合
→ 属性:变量(字段 field)+ 行为:函数(方法 method)
→ 类与对象的关系:类是对象的抽象(模板);对象是类的实例
Person p = new Person()
→ 类和对象有时统称对象,后者一般明确地叫“对象实例”
3. 面向对象语言的特点
→ 封装性:模块化(将属性和行为封装在类中 程序中定义很多类)+ 信息隐蔽(用户只通过受保护的接口访问某个类)
→ 继承性:父类和子类之间共享数据和方法,更好地进行抽象和分类、增强代码的重用率、提高可维护性
→ 多态性:不同的对象收到同一个方法,产生不同的效果,实现的细节则由接受对象自行决定
4. 面向对象设计思想的要点
→ 认为客观世界由各种对象组成
→ 程序的分析和设计要围绕以下几点来进行:
① 有哪些类,每个类有哪些属性、方法
② 类之间的关系(继承、关联等)
③ 对象之间发送消息(调用方法)
// 父类
class Person {
private int age;
String name;
public int getAge() {
return age;
}
public void setAge(int a) {
age = a;
}
void sayHello() {
System.out.println(name);
}
}
// 子类(继承:扩展而不是修改)
class Student extends Person {
double score;
String school;
void meetTeacher() {
System.out.println("Hello Teacher!");
}
}