基础知识
java程序要经过先编译后解释两个步骤。
java语言编写的程序需要经过编译的步骤,但这个步骤不会生成特定平台(操作系统)的机器码,而是生成一种与平台无关的字节码(.class)文件。这种字节码不可执行,必须通过java解释器来解释执行。
java编译器编译程序生成的是与平台无关的字节码,这些字节码不面向任何具体平台,只面向JVM。不同平台上的JVM是不同的,但他们都提供了相同的接口,JVM是Java程序跨平台的关键部分。相同的字节码文件在不同的平台上运行,这是不可能的,只能通过JVM这个中间转换器才能实现。
JVM:屏蔽底层操作系统的差异。
java:一处编译处处运行
JDK(Java标准版开发包)提供了编译,运行Java程序所需要的各种工具和资源。故JDK包含java运行环境(JRE),java编译器,java类库等。
JRE包含JVM,JVM是运行Java程序的核心虚拟机,但是运行java程序不仅要有核心虚拟机,还需要类加载器,字节码校验器等。因此,JRE除了包含JVM以外,还包含运行 java程序的其他环境支持。
一般而言,如果只是运行Java程序,可以只安装JRE,无需安装JDK。但是仅仅安装JVM是不够的。如果要开发Java程序,则应该选择JDK。
结构化开发方法(c),最小程序单元是函数;面向对象开发方法(java),最小程序单元是类,这些类可以生成系统中的多个对象。
类定义:成员变量(状态数据)+方法(行为)
面向对象的三个基本特征:封装+继承+多态+(抽象)
封装: 将对象的实现细节隐藏起来,然后通过公用方法来暴露该对象的功能;
继承: 是实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法;
多态:指子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,即同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。
- 类是具有共同属性,共同方法的一类事物。类是对象的抽象,对象则是类的实例,类的封闭性将各种信息细节隐藏起来,并通过公用方法来暴露该类对外所提供的功能。
- 类之间共享属性和操作的机制称为继承,继承具有传递性。继承可分为单继承(一个继承只允许有一个直接父类,即类等级为树形结构)和多继承(
一个类允许有多个直接父类,多继承会引起继承结构的混乱,降低 程序理解性,所以java不支持多继承) - 对象之间的相互合作需要“消息”这个机制进行协助,“消息”是一个实例与另一个实例之间相互通信的机制
基于对象=面向对象,基于对象没有继承的特点,从而也就没有多态的特点,面向对象三大基本特征(封装,继承,多态)缺一不可。- 对象具有标识唯一性,分类性,多态性,封装性,模块独立性好。
- 垃圾回收器
内存泄漏:一些分配出去的内存得不到及时回收,引起系统运行速度下降,甚至导致程序瘫痪。
Java里的对象具有唯一性,每个对象都有一个标识来引用它,如果某个对象失去了标识,这个对象将变成垃圾,等待垃圾回收机制来回收它。
Java程序的内存分配和回收都是由JRE在后台自动进行的,通常JRE会提供一个后台线程来进行检测和控制,一般都是在CPU空闲时或内存不足时,自动进行垃圾回收。
java语言不允许直接访问对象,而是通过对对象的引用来操作对象
一个java源文件可以包含多个类定义,但最多只能包含一个public类定义,如果源文件里包含public类定义,则该源文件的文件名必须与这个public类的类名相同。