准备知识
程序介绍
首先要清楚,学习java目的是为了编写程序。那什么是程序?
你到医院去看病需要遵守一个流程规则,那就是挂号,找医生,医生看病,医生开划价单,拿着划价单去给钱,回来找到看病的医生,然后医生给你一个单子,你再拿这个单子去取药......这就是一个程序,这个程序是医院制定的,针对的目标是病人。病人要按照医院的流程或者医院的指令执行看病过程。
我们要指挥计算机遵守我们的流程那么就需要写一堆指令给计算机。但是计算机不懂人话,所以我们就要学编程语言,编程语言可以指挥计算机做事情。腾讯的QQ软件就是一个程序,它包含了很多指令,只不过QQ是针对普通大众的,QQ的指令集被封装起来了。人类看不到,但是人类可以操作QQ软件提供给我们的接口(登录,编辑文字,发送消息,接收消息等等)。她的背后其实就是指令,我们通过使用QQ软件暴露给我们的接口进行聊天
因此我们要在计算机上写一套程序出来就必须要选择一套计算机能够读懂的编程语言。编程语言很多,我们选择java。
请记住:
编程语言没有最好,他们都为解决一类问题而诞生
编程语言精通一门就可以很快上手另外一门
计算机相关基础知识
计算机是软件和硬件的统一,只有硬件的计算机只是一堆废铁。软件离开了计算机就像灵魂没有肉体,跟鬼一样。
跟硬件最紧密的软件就是操作系统了。常见的操作系统有Linux,Windows,mac,unix。在操作系统上可以承载很多软件。
计算机的硬件部分变化很小,大致都可分为如下几个常见部件。
- CPU
- 内存(主存)
- 输入设备
- 输出设备
- 通信设备
以上的各个部件被一根总线集成在主板上。可以这么理解,主板就是一块链接各个部件的电路板。
中央处理器
就是CPU,他就是计算机的大脑,专门实现计算。她和人的大脑很类似。
CPU的组成:CPU通常由控制单元和逻辑单元两部分组成
- 逻辑单元顾名思义就是处理数值运算
- 控制单元用于控制和协调其他组件的动作
CPU是构建在一块小小的硅半导芯片上,上面有武术的小电炉开关,用于处理信息。计算机内部有一个时钟,以固定时间发送电子脉冲
一个脉冲会同步各种操作的步调。因此时钟速度越快单位时间内执行的指令留越多性能就越好。
时钟的计量单位是赫兹(Hz)=(1赫兹=每秒/一个脉冲)
兆赫(MHz)=100万Hz
千兆赫(GHz)=1000MHz
以前的CPU只有一个核,核实CPU读取和执行指令的部分,现在一个CPU有多核了
比特和字节
此处是讨论内存前的基础。我们要搞清楚数据是怎么在计算机中存储的。计算机就是一系列的电路开关,要么是开要么是关。
因此,0代表关,1代表开,01的组合就是万物在计算机中的表现形式。用01的组合作为万物的代码。
01的组合我们把它看做是二进制的数值系统。称之为位bit,一个位要么是0要么是1
8个位组成计算机最小的单位-----字节byte.
为什么byte是最小单位而不是位?因为byte在内存中有唯一的地址码
内存
计算机内存是一组有序的字节组成。数据在被CPU执行直线必须移到内存中。
每一个字节都有一个唯一的地址。使用这个地址就能准确的确定字节的位置。
存储设备
- 磁盘
- 光盘
- USB闪存驱动器
输入输出设备
输入:键盘鼠标
输出:显示器
通信设备
通信设备用于进行联网
- 拨号调制解调器
- DSL
- 电缆调制解调器
- 网络接口卡
- 无线网络适配器
编程语言
机器语言
汇编语言
机器语言编写代码枯燥乏味,因此人们使用一些描述性单词来作为机器语言的替代品,例如:
add 2,3 result
汇编降低了机器的复杂度,但是计算机读不懂,所以需要一个汇编器的东西将汇编语言转换为机器码。但是不同类型的计算机机器码不一样,汇编语言一条指令对应机器语言的一条指令,所以汇编语言分了很多种,兼容性很差,移植性也非常的差。所以汇编语言和机器语言都被认为是低级语言,汇编很贴近机器语言。
中级语言
很多介绍上是没有中级的,这只是我个人划分出来的。有人认为结构化语言都是中级,这并没有错。但是按我个人理解是编译型语言都归于此列。
如经典的C和C++,一个是过程化一个是面向对象。他们都需要编译器将源码编译为可执行的文件。
高级语言
代表为:C#,java,python。他们都是解释型或者半解释型的。并且跨平台(C#也在准备跨平台)。上手容易,更便于人类理解。
他们的运行借助虚拟机。因此可以做到跨平台。
总结
不管什么语言都没有好坏之分,都有自己的生存空间和作用。所以精通一门可以触类旁通的。
操作系统
操作系统是运行在计算机上最底层最基础最重要的程序。通过它可以管理和控制计算机的活动。
操作系统的主要任务有:
- 控制和监视系统活动
- 分配和调配系统资源
- 调度操作
控制和监视系统活动
识别键盘的输入,
向显示器发送输出结果
跟踪存储设备中的文件和文件夹的动态
控制类似硬盘驱动器和打印机
确保不同的程序和用户同事使用计算机时不受到干扰
分配和调配系统资源
负责确定一个程序需要使用哪些计算机资源(CPU,内存,磁盘,输入输出设备)
调度操作
多线程,多处理器的调度协调。这一点深入理解多线程后就能明白
java语言使用须知
java是一门生命力旺盛的语言。
它运行在虚拟机中,所以你要下载安装虚拟机(JDK)
java的类型有如下三种:
- javaSE:标准版。基础中的基础,其他类型的都是基于SE的
- javaEE:开发服务器端的应用程序
- javaME:用来开发移动设备的应用程序。
我们主要介绍SE。下载JDK1.8
如果是初学者希望读者自己百度完成以下的操作:
- 到官网下载JDK1.8
- 安装JDK
- 配置环境变量
- 测试JDK是否安装成功
IDE选择
市场上用的最多的就是eclipse和IDEA了,当然不止这些。
我不想去说两者谁好。
选择使用IDEA只要记住 跟上潮流大众的步伐即可。目前这两种都是主流,二选其一即可。
在没有开发web项目前请使用命令行。
一个简单的java程序
编译这个文件:java Welcome.java
执行:javac Welcome
如果是Windows平台下的命令行请百度基本的目录文件操作,我这个是linux下的命令行。分析下面的代码:
public class Welcome{
public static void main(String[] args){
System.out.println("我爱你一万年");
}
}
Welcome是类名,必须和文件名相同
public static void main(String[] args)这里的main是程序的入口。所有的程序指令总有一个执行的开头吧,这里就是开头
System.out.println("我爱你一万年");是打印输出内容到控制台
花括号{}以及其中的内容组织起来形成一个块
编译过程:
编译源文件的时候如果没有语法错误就会生成一个名为.class的字节码文件。如aaa.java编译后多出一个aaa.class
java语言是高级语言,字节码是低级语言。类似于机器指令(二进制是物理机器的机器指令,字节码是虚拟机的机器指令)
字节码可以在任何系统下的虚拟机中运行。虚拟机就是一个解释字节码的软件而已。
解释的过程却是:一次将字节码翻译为目标机器语言代码,然后立即执行这一步。
疑问
java到底是编译语言还是脚本。
其实脚本语言就是解释型语言,解释器(引擎,虚拟机)解释源代码并执行源代码逻辑,如js的执行引擎,
java虽然是虚拟机解释执行的字节码,但是对于字节码的解释是翻译为机器码并立即执行,而且对于字节码中最长用的代码虚拟机会预先将它编译成机器码,叫做即时编译。所以java不完全是解释型也不完全是编译型。
虚拟机不过是模拟物理机,字节码不过是模拟机器码。总的来说java偏向解释型。
虚拟机解释字节码后执行的动作其实也是指令控制的,写虚拟机的是C语言,因此编译型和解释型其实差别并不大
总结
- 计算机是存储和处理数据的电子设备
- 计算机包括硬件和软件
- 硬件是计算机中可以触摸到的物理部分
- 计算机程序就是编写让计算机执行的指令
- 计算机程序就是通常说的软件,是指令的集合,目的是控制硬件完成任务
- 中央处理器是计算机的大脑。他从内存获取指令并且执行
- 计算机使用0或者1,因为数字设备只有这两个状态最稳定
- 一个比特(位)是指二进制数0或者1
- 一个字节
- 是指8个比特的序列
- 1024字节=一兆,1024兆=一G,1024G=一T
- 内存存储CPU需要执行的数据和程序指令
- 内存是字节的有序序列
- 内存无法长久保存信息,断点后就会丢失
- 程序和数据永久的保存在硬盘里。当计算机需要使用的时候才移入到内存中
- 汇编是一种低级语言
- 高级语言类似英语,易于学习和使用
- 用高级语言编写的程序又叫做源程序或源代码
- 编译器是将源代码编译为机器语言
- 操作系统是管理和控制计算机活动的程序
- Java源程序后缀.java
- Java字节码后缀.class
- Java程序可以内嵌在html网页内。通过web浏览器下载
- Java是平台无关的,只要有对应操作系统的虚拟机就可以一边写到处运行
- javac命令可以编译Java源程序
- Java命令可以执行字节码文件
- 每个Java程序都是一套类的定义集合。
- 编程错误可分为:语法错误,运行时错误,逻辑错误