# 计算机和java
计算机基础
计算机系统由硬件和软件组成。硬件就是物理的机器。计算机要执行的一组指令称之为程序。用于向计算机发出指令的所有各种类型的不同程序统称为软件。
硬件和内存
今天所用的大多数计算机都有相同的部件,本质上以相同的方式进行配置。它们都拥有输入设备,比如键盘和鼠标。它们都拥有输出设备,比如显示屏幕和打印机。
CPU,也就是中央处理单元,是计算机中执行程序指令的设备。
计算机的存储器保存计算机要处理的数据,并保存计算机的中间计算结果。储存器有两种基本形式,称之为主存和辅存。主存保存当前程序和程序操作的大部分数据。存储在主存中的数据是易变的,也就是说,关闭计算机之后,数据将会消失。与此相反,辅存中的数据在计算机断电之后也依然存在。
字节是度量存储器大小的单位。一个字节是八个位。
计算机的主存是由一长串的编号字节组成。字节的编号称之为它的地址。字节是最小的存储器可寻址单位。一块数据,比如一个数字或字符,能够保存到这些字节的一个字节当中。当计算机想要恢复这个数据时,它使用该字节的地址找到这个数据项。
程序
程序就是计算机要执行的一组指令。
软件简单的说就是程序,计算机中的软件就是其中程序的集合。
编程语言、编译器、解释器
计算机能够直接理解的语言称为机器语言。汇编语言是机器语言的一种符号化形式。是低级语言。
高级语言是人们易于理解与使用的语言,而计算机并不能理解高级语言,它必须变成计算机能够理解的语言才能执行。
从高级语言到低级语言的变换完全或部分由另一个程序来完成。对某些高级语言来说,这种变换能够一次完成称之为编译器的程序完成,因此,运行高级程序语言之前,必须对该程序运行编译器。当你完成这个任务时,你的这个操作称为编译程序。完成这个步骤后,就可以运行多次而无须重新编译。
编译器是这样一个程序,它将高级语言编写的程序翻译为计算机能够或多或少直接理解的、以更简单的语言书写的程序。
一些高级语言是由另一种称为解释器的程序进行翻译。与编译器不同,解释器在翻译了部分代码之后执行这些代码,而不是一次性地翻译整个程序。使用解释器意味着,在你运行程序时,翻译与执行交替地进行。也就是每次运行这个程序时都要做翻译。
编译后的程序通常比解释执行的程序运行速度快。
翻译大多数高级语言编写的程序的过程都存在一个确点,就是对每种类型的语言或计算机系统,你都需要一个不同的编译器或解释器。
java采用了更灵活的方式,它将编译器和解释器结合起来。
java字节代码
java编译器并不把用户的程序翻译成特定计算机的机器语言。它将程序翻译成一种称为字节代码的语言。字节代码不是任何特定计算机的极其远。将字节代码编写的程序翻译成实际计算机的机器语言相当容易。完成这个翻译的程序是一种解释器,称为Java虚拟机(JVM)。JVM翻译和运行java字节代码。
java字节代码为java提供了一个重要的优势,可移植性。
类加载器
java程序极少编写全放在一个文件中的一段代码。程序通常由不同的程序段组成,这些程序被称为类。这些类通常由不同的人编写,每一个类都被单独编译。每一个类都被编译到不同的字节代码片段中。而要运行你的程序,需要将这些种类的字节代码相互连接起来。连接工作由一个称为类加载器的程序完成。连接工作通常自动完成。
面向对象编程
面向对象编程是一种思想方法,它将程序看做是由独立行动或相互作用的对象组成。软件对象既可以代表现实世界中的对象,也可以是一种抽象。
类是一组对象属性和行为的蓝图。类定义了这些对象的类型,同一个类的所有对象都拥有相同的方法和相同类型的数据。
对象是完成某些动作的程序构造。这些动作由对象的方法定义,对象的特性由其数据来确定,这些属性的值给出了对象的状态。
面向对象的3个主要原则:
- 封装:
- 封装时隐藏对使用对象来说不必要知道的所有细节与过程。
- 多态:
- 意味着用作指令的一个方法名称能够引发不同的动作,具体动作依赖于完成该动作的对象的类型。
- 继承:
- 继承是组织类的一种方法。定义一个拥有公共属性和方法的通用类,之后继承定义专门化的类,办法是添加或修改通用类的具体细节。