这几天很迷茫,听老师介绍了一款软件~中国大学MOOC。刚好我是软件专业的学生,索性听了北京大学老师的一节关于Java的讲课,果断被震撼到了,他们的讲课给人一种很深刻(深入)的感觉。我今天就把老师讲到的东西记了下来,以便于有兴趣的朋友阅读…
Java分为三大平台
Java SE 标准版Java EE 企业版Java ME 微型版
Java的开发工具包 JDK(Java Development Kit)
Java的推动力:JCP与JSR
Java是一种编程语言
它是一种面向对象的编程语言(OOP)它的语法结构与C和C++语言极为相似Java所用的语法十分简单
Java的特点
简单一些面向对象平台无关性安全稳定支持多线程
丰富的类库
Java提供了大量的类以满足网络化、多线程、面向对象的系统需要
语言包(package)实用程序包I/O包网络包图形用户界面包And More…
Q:Java 可以干什么
A:如下
面向对象的应用开发各类网络应用程序的开发计算过程的可视化动态界面/交互操作Internet的系统管理数据库操作And More…
Java是C++–
无直接指针操作自动内存管理数据类型长度固定不用头文件不包括结构和联合不支持宏不支持多重继承无类外全局变量无GOTO
Java运行机制
Java三种核心机制
Java虚拟机(JVM)代码安全性检测(Code Security)垃圾收集机制(Garbage Collection)
Java的编译与运行
Java虚拟机(JVM)
在一台计算机上由软件或硬件模拟的计算机。Java虚拟机(JVM)读取并处理经编译过的字节码class文件。
Java虚拟机规范定义了:
指令集寄存器集
类文件结构
栈堆
垃圾回收堆
内存区域
Java运行环境(JRE)
JRE(The Java Runtime Environment)JRE = JVM+API(Lib)JRE运行程序时的三项主要功能:
加载代码:由class loader完成;校验代码:由bytecode verifier完成;
执行代码:由runtime interpreter完成。
Java自动垃圾回收技术
垃圾回收(garbage collection)在C/C++等语言中,由程序员负责回收无用内存Java语言自动垃圾回收
系统级线程跟踪存储空间的分配情况在JVM的空间时,检查并释放那些可被释放的存储器空间
程序员无须也无法精确控制和干预该回收过程
JDK(Java开发工具包)
JDK = JRE+Tools
JRE(运行环境) = JVM+API
JDK下载
要开发Java程序,要下载JDK
可以只下载JavaSE注意:如果只运行Java程序,则只下载JRE
JDK提供的工具
java编译器 javac.exe
java执行器 java.exe
文档生成器 javadoc.exe
java打包器 jar.exe
java调试器 jdb.exe
面向对象程序设计
对象
对象具有两方面的含义:
在现实生活中:
是客观世界中的一个实体在计算机世界中:是一个可标识的存储区域
类(class)
类:具有共同属性和行为的对象集合
属性:变量(字段 field)行为:函数(方法 method)类与对象的关系
类是对象的抽象(模板)
对象是类的实例注:类和对象有时候都统称为“对象”,为了明确起见,后者称为“对象实例”。
Person类
class Person{int age;String name;void sayHello(){...}}
对象实例化
Person person = new Person();
面向对象的三大特征
封装性继承性多态性
封装
模块化:将属性和行为封装在类中,程序定义很多类。
信息隐蔽:将类的细节部分隐藏起来,用户只通过受保护的接口访问某个类。
class Person{private int age;public int getAge(){return age;}public void setAge(int a){age=a;}String name;void sayHello(){...}}
继承(inheritance)
继承性
父类和子类之间共享数据和方法继承的好处更好的进行抽象与分类
增强代码的重用性
提高可维护性
父类
class Person{int age;String name;void sayHello(){...}}
子类
class Student extends Person{String school;double score;void meetTeacher(){...}}
多态性
多态
不同的对象收到同一个消息(调用方法)可产生完全不同的效果实现的细节则由接受对象自行决定
例 foo(Person p ){ p.sayHello(); }
foo( new Student() );
foo( new Teacher() );
面向对象设计思想的要点
认为客观世界由各种对象组成程序的分析和设计都围绕着
有哪些对象类每个类有哪些属性、哪些方法
类之间的关系(继承、关联等)
对象之间发送消息(调用方法)