什么是计算机
计算机包括软件
和硬件
两部分。硬件提供可见的物理部分而软件提供不可见的指令,这些指令控制硬件并使硬件完成特定的任务。
硬件组成——物理层面
-
中央处理器(CPU)
-
内存(主存)
-
存储设备(光盘、磁盘)
-
输入设备(鼠标、键盘)
-
输出设备(显示器和打印机)
-
通信设备(调制解调器和网卡)
这些组件通过一个称为总线(bus)
的子系统连接,形象化描述为一个连接计算机各个组件的道路系统,数据和电力沿着总线从计算机的一个部分传播到另一个部分。在个人计算机中,总线内置在主板
中,主板是一个将计算机各个部分连接到一起的电路板。
软件组成——精神层面
软件,即一系列按照特定顺序组织
的计算机数据
和指令
的集合,有系统软件和应用软件之分。
-
系统软件:Linux、iOS、Windows、Android..
-
应用软件:WPS、PS、CrossFire...
人机交互方式:
图形化界面(Graphical User Interface,GUI),这种方式简单直观,使用者易于接受,容易上手操作。
命令行方式(Command Line Interface,CLI),需要在控制台输入特定的
指令
,让计算机完成一些操作。需要记忆一些指令,较为麻烦。
中央处理器
由两部分组成:控制单元
和算数逻辑单元
核
是处理器中实现指令读取核执行的部分。为了提高CPU的处理能力,现在多制造多个核的CPU。
1Byte = 8bit
1KB = 1000B
1MB = 1000000B
1GB = 1000000000B
1TB = 1000000000000B
内存
内存
由一个有序的字节序列构成,用于存储程序和程序正在使用的数据。可以将其视作计算机执行程序的工作区域。程序及其数据必须移到计算机的内存,然后才能由CPU执行。
也被称为随机访问存储器(Random-Access Memory RAM)
-
负责硬盘的数据到CPU的数据交换处理:保存从硬盘读取的数据,提供给CPU使用;保存CPU的一些临时执行结果,以便CPU下次使用或保存到硬盘。
-
计算机具有的RAM越多,运行速度越快,但
并非越多越好,有局限性
-
内存字节永远不会为空,初试内容对于本身程序可能毫无意义。一旦新的信息被放入,当前内容就会丢失
-
断电后数据丢失
存储设备
程序和数据被永久的存放在存储设备上,并在计算机实际使用它们的时候再移入内存,在内存中的操作速度比在永久存储设备中快得多。
主要分为四种类型:
-
磁盘驱动器
-
光盘驱动器(CD、DVD)
-
通用串行总线(USB)闪存驱动器
-
云存储
驱动器(drive)是对存储介质(例如光盘和磁盘)进行操作的设备。存储介质存储数据和程序指令,驱动器从介质读取数据,以及将数据写入介质。
硬盘:
计算机最主要的存储设备,容量大,断电数据不丢失。
正常分类:
机械硬盘(HDD)
、固态硬盘(SSD)
以及混合硬盘(SSHD)
固态硬盘在开机速度和程序加载速度远远高于机械硬盘,缺点就是贵,所有无法完全取代机械硬盘。
输入和输出设备
让用户和计算机进行通信,最常见的输入设备就是鼠标和键盘,输出设备是显示器和打印机。
DOS命令
DOS(Disk operating system)是微软在windows之前推出的操作系统,是单用户、单任务的操作系统。
win+r
输入cmd
进入DOS操作窗口。
常用指令
:
操作1:访问和回退
操作 | 说明 |
---|---|
盘符名称: | 盘符切换。E:回车,表示切换到E盘。 |
dir | 列出当前目录下的文件以及文件夹 |
cd 目录 | 进入指定单级目录。 |
cd 目录1\目录2\... | 进入指定多级目录。cd atguigu\JavaSE |
cd .. | 回退到上一级目录。 |
cd \ 或 cd / | 回退到盘符目录。 |
操作2:增删
操作 | 说明 |
---|---|
md 文件目录名 | 创建指定的文件目录。 |
rd 文件目录名 | 删除指定的文件目录(如文件目录内有数据,删除失败) |
操作3:其它
操作 | 说明 |
---|---|
cls | 清屏。 |
exit | 退出命令提示符窗口。 |
← → | 移动光标 |
↑ ↓ | 调阅历史操作命令 |
Delete和Backspace | 删除字符 |
复习题:
什么是软件和硬件?
列举计算机5个主要硬件组件。
CPU是什么含义?测量CPU速度的单位?
什么是bit,什么是字节?
内存是用来做什么的?RAM代表什么?为什么内存称为RAM?
用于测量内存大小的单位是什么?用于测量磁盘大小的单位是什么?
内存和永久存储设备的主要不同是什么?
计算机编程语言
语言 = 语法 + 逻辑
机器语言
内嵌在每台计算机的基本指令集
使用穿孔卡带表示二进制代码,称为机器语言。人类很难理解。
汇编语言——低级语言
-
使用英文缩写的
助记符
来表示基本的操作,这些助记符构成了汇编语言的基础。比如:LOAD
、MOVE
等,使人更容易使用。因此,汇编语言也称为符号语言
。 -
优点:能编写
高效率
的程序,降低了程序设计难度 -
缺点:
-
依赖机器:汇编语言是
面向机器的
,不同计算机机型特点不同,因此会有不同的汇编语言,彼此之间不能通用
。程序不易移植,较难调试。 -
需要
汇编器
的将汇编语言转化为机器代码。
-
高级语言
高级语言发展于20世纪50年代中叶到70年代,是一种接近于人们使用习惯
的程序设计语言。它允许程序员使用接近日常英语
的指令来编写程序,程序中的符号和算式也与日常用的数学式子
差不多,接近于自然语言和数学语言,容易为人们掌握。
高级语言独立于机器
,有一定的通用性;用高级语言编写的程序称为源程序
或源代码
。;计算机不能直接识别和执行用高级语言编写的程序,需要使用编译器或者解释器,转换为机器语言
才能被识别和执行。
-
解释器:从源代码读取一条语句,将其转换为机器代码或者虚拟机代码,然后立刻运行。注意源代码的一条语句可能被转换成多条机器指令。
-
编译器将整个源代码转换为机器代码文件,然后执行机器代码文件。
此外,高级语言按照程序设计方法的不同,又分为:面向过程的语言
、面向对象的语言
。
-
C、Pascal、Fortran面向过程的语言
-
C++面向过程/面向对象
-
Java跨平台的纯面向对象的语言
-
C#、Python、JavaScript、Scala…
复习题:
CPU能理解什么语言?
什么是汇编语言?什么是汇编器?
什么是高级程序语言?什么是源程序?
什么是解释器?什么是编译器?
解释语言和编译语言的区别?
计算机操作系统
是运行在计算机上最重要的程序。从操作系统管理和控制计算机的活动。通用计算机流行的操作系统有Microsoft Windows、Mac OS、Linux
操作系统的主要任务:
-
控制和监视系统活动
-
分配和调配系统资源
-
调度操作
-
技术:多道程序设计、多线程、多处理机
-
多道程序设计:允许多个程序同时使用CPU,一旦CPU空闲就让别的程序使用它。
-
多线程允许单个程序同时执行多个任务。
-
多处理机类似与多线程,区别在于多线程是在单个程序中
并行
执行多个线程,而多处理机是采用多个处理器来并行处理多个程序。
-
-
复习题:
什么是操作系统?列出一些流行的操作系统?
操作系统的主要任务?
什么是多道程序设计、多线程和多处理?
Java语言概述——Code once,run anywhere
-
是
James Gosling
在SUN
(Stanford University Network,斯坦福大学网络公司 )公司领导的团队开发的,于1995年
推出的一门高级编程语言。2010年Sun公司被Oracle收购。 -
是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在
Web浏览器
中运行。这些Java程序被称为Java小程序
(applet),内嵌在HTML代码中。 -
伴随着互联网的迅猛发展,以及Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。
-
Java特点:
-
简单的
-
面向对象的
-
分布式的
-
解释型的
-
健壮的
-
安全的
-
架构中立的
-
可移植的
-
高性能的
-
多线程的
-
动态的
-
复习题:
Java发明者?现在谁拥有Java?
什么是Java applet?
Android使用的是什么编程语言?
Java语言规范、API、JDK、JRE、IDE
Java语言规范:是对Java程序设计语言的语法和语义的技术定义
应用程序接口(API):也成为库,包含了为开发Java程序而预先定义的类和接口
Java版本:
-
Java SE(Java Standard Edition)标准版
-
支持面向
桌面级应用
(如Windows下的应用程序)的Java平台,即定位个人计算机的应用开发。 -
包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。
-
此版本以前称为J2SE
-
-
Java EE(Java Enterprise Edition)企业版
-
为开发企业环境下的应用程序提供的一套解决方案,即定位
在服务器端的Web应用开发
。 -
JavaEE是JavaSE的扩展,增加了用于服务器开发的类库。如:Servlet能够延伸服务器的功能,通过请求-响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技术。
-
版本以前称为J2EE
-
-
Java ME(Java Micro Edition)小型版
-
支持Java程序运行在
移动终端(手机、机顶盒)上的平台
,即定位在消费性电子产品的应用开发 -
JavaME是JavaSE的内伸,精简了JavaSE 的核心类库,同时也提供自己的扩展类。增加了适合微小装置的类库:javax.microedition.io.*等。
-
此版本以前称为J2ME
-
JDK:由一组独立程序组成,各个程序都是从命令行调用的,用于编译、运行和测试Java程序。是Java程序的开发工具包,包含JRE和开发人员使用的工具。
JRE:是Java程序的运行环境,包含JVM
和运行时所需要的核心类库
。
IDE:集成开发环境
复习题:
什么是Java语言规范?
JDK代表什么?JRE代表什么?
IDE代表什么?
简单Java程序
Java程序开发三步骤:编写、编译、运行。
-
将 Java 代码编写到扩展名为 .java 的源文件中
-
通过 javac.exe 命令对该 java 文件进行编译,生成一个或多个字节码文件
-
通过 java.exe 命令对生成的 class 文件进行运行
public class Main {
public static void main (String[] args) {
System.out.println("Hello World!");
}
}
-
class:类 Main为类名
-
main方法的格式固定:
public static void main (String[] args)
-
一个源文件中可以生命多个类,但只能有一个类是用public声明,且要求声明为public的类的类名与源文件名相同。
注释
-
单行注释
//注释
-
多行注释
/*
Line1
Line2
*/
-
文档注释(Java特有)
/** @author 指定java程序作者 @version 指定源文件的版本 */
-
文档注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
-
复习题:
什么是关键字?列举一些Java关键字
Java区分大小写吗?Java关键字是大写还是小写?
什么是注释?编译器悔忽略注释吗?如何标识一行或一段注释?
在控制台上显示一个字符串的语句是什么?
创建、编译和执行Java程序
Java语言优缺点
Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。“青出于蓝,而胜于蓝”。
优点
-
跨平台性:这是Java的核心优势。Java在最初设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。
-
通过Java语言编写的应用程序在不同的系统平台上都可以运行。“
Write once , Run Anywhere
”。 -
原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (
J
VM ,JavaV
irtualM
achine) 即可。由JVM来负责Java程序在该系统中的运行。
-
-
面向对象性:
面向对象是一种程序设计技术,非常
适合大型软件的设计和开发
。面向对象编程支持封装、继承、多态等特性,让程序更好达到高内聚
,低耦合
的标准。 -
健壮性:吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。
-
安全性高:
Java适合于网络/分布式环境,需要提供一个安全机制以防恶意代码的攻击。如:
安全防范机制
(ClassLoader类加载器),可以分配不同的命名空间以防替代本地的同名类、字节代码检查。 -
简单性:
Java就是C++语法的
简化版
,我们也可以将Java称之为“C++--
”。比如:头文件,指针运算,结构,联合,操作符重载,虚基类等。 -
高性能:
-
Java最初发展阶段,总是被人诟病“
性能低
”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率
。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。 -
Java低性能的短腿,已经被完全解决了
。业界发展上,我们也看到很多C++应用转到Java开发,很多C++程序员转型为Java程序员。
-
缺点
-
语法过于复杂、严谨
,对程序员的约束比较多,与python、php等相比入门较难。 -
一般适用于大型网站开发,
整个架构会比较重
,对于初创公司开发和维护人员的成本比较高(即薪资高),选择用Java语言开发网站或应用系统的需要一定的经济实力。 -
并非适用于所有领域
。比如,Objective C、Swift在iOS设备上就有着无可取代的地位。浏览器中的处理几乎完全由JavaScript掌控。Windows程序通常都用C++或C#编写。Java在服务器端编程和跨平台客户端应用领域则很有优势。
Java程序开发
-
源文件名拓展名必须是.java,且文件名必须与公共类名完全相同
如果没有语法错误,编译器会生成一个扩展名为.class的字节码文件。字节码类似机器指令,但它是架构中立的,即可以在任何带Java虚拟机(JVM)的平台上运行。虚拟机不是物理机器,而是一个解释Java字节码的程序。Java字节码可以在不同的硬件平台和操作系统上运行。Java源代码编译成Java字节码,然后Java字节码被JVM解释执行。代码还可能要用到Java库中的代码,那么JVM将执行你的程序代码以及库中的代码。
-
如果运行一个不存在的类文件,就会出现NoClassDefFoundError错误。如果执行的类文件没有main方法或敲错了main方法(Main),则会产生NoSuchMethodError错误。
JVM
JVM(J
ava V
irtual M
achine ,Java虚拟机):是一个虚拟的计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。
功能1:实现Java程序的跨平台性
我们编写的Java代码,都运行在JVM 之上。正是因为有了JVM,才使得Java程序具备了跨平台性。
使用JVM前后对比
功能2:自动内存管理(内存分配、回收)
-
Java程序在运行过程中,涉及到运算的
数据的分配
、存储
等都由JVM来完成 -
Java消除了程序员回收无用内存空间的职责。提供了一种系统级线程跟踪存储空间的分配情况,在内存空间达到相应阈值时,检查并释放可被释放的存储器空间。
-
GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上
减少了
因为没有释放空间而导致的内存泄漏
。
Java程序还会出现内存溢出和内存泄漏问题吗? Yes!
在运行一个Java程序时,JVM首先会使用一个类加载器(class loader)
的程序将类的字节码加载到内存中。如果程序中还使用了其他类,类加载程序会在需要使用它们之前进行动态加载。加载完类后,JVM使用一个字节码验证器(bytecode verifier)
的程序来检验字节码的合法性,确保字节码没有违反Java的安全规范。Java强制执行严格的安全规范,以确保Java类文件没有被恶意篡改,而且不会危害计算机。
复习题:
Java源文件的拓展名是什么,Java字节码文件的拓展名是什么?
Java编译器的输入输出是什么?
编译Java程序的命令是什么?
运行Java程序的命令是什么?
什么是JVM?
Java可以运行在任何计算机上吗?在一台计算机上运行Java需要什么?
NoClassDefFoundError错误什么原因?
NoSuchMethodError错误什么原因?
程序设计错误
-
语法错误(Syntax Error):在编译过程中由编译器检测到的错误
-
运行时错误(Runtime Error):导致程序异常终止的错误
-
环境检测到一个不可能执行的操作
-
输入错误:程序希望读入一个数值但是用户输入了一个字符串
-
-
除0
-
-
逻辑错误(Logic Error):程序没有按预期的方式执行
-
很难发现
-
常见错误:
遗漏右括号
遗漏分号
遗漏引号
拼写错误(String-string)