您的位置:首页 > 理论基础

Java基础笔记1-计算机基础

2016-02-03 20:47 190 查看
A、什么是计算机?

1453536487024035660.png

定义:接收用户输入指令和数据,经过中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息。

B、计算机硬件五大单元

1453536487076008836.png

输入单元:包括键盘、鼠标、触摸屏、扫描仪等。

Cpu:中央处理器,相当于大脑,具有特定功能的芯片,里面包含微指令集,含有算术逻辑、控制、记忆等单元。

内存:相当于大脑中的记录区块,cpu读取的数据都是从内存读取出来的,数据基本上都是流经过内存再转出去的。

输出单元:包括屏幕、打印机等。

外部存储设备:包括存储设备(硬盘、光盘等)、显示设备(显卡)、网络设备(网卡)。

硬盘:相当于大脑中的记忆区块,将重要的数据记录起来,以便未来再次使用这些重要经验。

主板:相当与神经系统,通过cpu发布指令,通过主板传输下达。

显卡:相当于脑中影像

电源:相当于心脏,所有组件都要足够的电力供给才能正常运作。

C、计算机系统组成

计算机系统由硬件和软件组成

硬件:物理机器

软件:所有用来向计算机发送不同指令的不同类型程序称为软件

D、存储器

E、主存储器

1453536487892097185.png

计算机只认识0和1,记录的数据是用二进制的;

0和1的单位为我们称为bit,在存数据时会使用到8个bit大小类记录,也就是一个字节Byte;一个字节刚好可以存键盘上的一个字符,字节的编号称为地址address,

1Byte=8Bit;

文件以编码的形式存储在辅助存储器,当程序运行时,将程序从辅助存储器复制到主存储器中;

要存大份数据时,如果单个字节放不下,计算机会使用许多相邻字节;

为啥是0和1?只有两个稳定状态的物理设备比较容易制造,如果通电就是1,没有通电就是0,像一个开关按钮,这是一种约定,也可以用A和B,真或假,不过大家都遵守这个约定,在编程时不需要关心数据是编码为0和1,可以看成事字母、数字或字符直接存储到存储器中去。

F、文字编码系统

数据参考编码示意图

1453536488176095996.png

文本文件也是被记录为0和1的,而要取出来时,必须经过一个编码系统处理才行;

编码系统可以想成是一个字符的对照表;

写入文件的文字数据,会有编码对照表将文字转换为数字,再存入文件中;

读取文件内容时,也会经过编码对照表将数字转成对应的文字再显示出来;

常用的英文编码表为ASCII,每个符号占1B的记录,总共有2的8次方=256种变化;

中文编码有繁体编码big和简体gb2312,每个中文会占用2B,理论有2的16次方=65536,即最多可达6万多个中文字;

由于在读取数据经常会发生乱码,为解决这个问题,才有Unicode编码,也就是UTF8统一编码,如无特殊情况,程序文件编码格式最好设置成UTF8编码格式保存。

G、程序

1453536489464089144.png

程序只是计算机要遵循的一系列指令;

将数据作为程序的输入,输出来自程序的输出,计算机只是辅助程序运行而已;

操作系统本身就是一种监控程序,监控计算机的所有操作。

H、编程语言与编译器

编程语言分类:

1453536489528092269.png

编译器:

1453536490447086383.png

计算机无法解析高级语言,在运行高级语言编写的程序时必须编译成机器语言,这项工作称为编译程序;

编译器是一个程序,负责将java程序这样的高级语言翻译成计算机可以解析的语言编程的程序;

输入编译器程序(源程序或源代码)和从编译器程序中输出的(目标程序或目标代码)都是程序;

I、java虚拟机

Java编译器、虚拟机、计算机之间的关系:

编译并允许一个java程序的流程:

Java虚拟机(JVM)是在实际计算机上用软件实现的计算机模型,可以理解为一台假想的计算机,它有自己的虚拟的处理器、堆栈、寄存器等,还有相应的指令系统,负责翻译和运行java字节码;

Java虚拟机包括类下载器、字节码校验器、执行单元(解析器)组成;

Java编译器生成的目标代码不是面向具体处理器的代码,而是面向虚拟机的中间码,成为字节码(byte-code),字节码只能运行在java虚拟机上,可以理解为假想的计算机的机器语言;

Java编译器对字节码的翻译和执行是逐条运行的,而不是一次整个翻译;

Java是解析型的语言,解析执行的程序在运行速度上要比编译执行的程序慢一些。但对于支持即时编译(JIT---Just-In-Time complication)的java运行环境来说,其运行效率会提高很多,因为JIT在字节码被装载时,会将其编译成能够在客户端运行的本地代码,所以只有程序第一次加载的时候慢一点,在运行时和本地代码具有同样的运行速度;

在编写java程序时,很少将所有代码都写在一个文件里,通常由类的不同代码段组成,每个类都是分别编译的,这样每个类就会翻译成不同的字节码片段,要运行程序,就要将这些不同的字节码连接起来,这动作是交给类装载器来操作的,类似其它语言里的连接器;

为啥java不直接编译成计算机语言,反而编译成字节码额外多一步?大多数其它语言都生成机器码,通常运行速度更快些。但是java字节码保证了java的可移植性,在任何一台计算机上都可以使用java字节码,不需要重新编译,这样不必为不同类型的计算机编写不同的编译器,一种java编译器适用于所有计算机,但是为翻译字节码指令,每种类型的计算机必须有自己的字节码解析器,与编译器相比,解析器是很简单的程序。例如,c# 经常就会碰到32位计算机生成的dll在64位计算机跑,会有兼容性问题,好麻烦。

@注意:

本文由东亮博客提供

如需转载,烦请注明出处:http://www.lindongliang.cn/news76

有任何问题可以留言!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: