Java语言程序设计:Chap1——计算机、程序与Java概述

什么是计算机

计算机包括软件硬件两部分。硬件提供可见的物理部分而软件提供不可见的指令,这些指令控制硬件并使硬件完成特定的任务。

硬件组成——物理层面

  • 中央处理器(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删除字符

复习题:

  1. 什么是软件和硬件?

  2. 列举计算机5个主要硬件组件。

  3. CPU是什么含义?测量CPU速度的单位?

  4. 什么是bit,什么是字节?

  5. 内存是用来做什么的?RAM代表什么?为什么内存称为RAM?

  6. 用于测量内存大小的单位是什么?用于测量磁盘大小的单位是什么?

  7. 内存和永久存储设备的主要不同是什么?

计算机编程语言

语言 = 语法 + 逻辑

机器语言

内嵌在每台计算机的基本指令集

使用穿孔卡带表示二进制代码,称为机器语言。人类很难理解。

汇编语言——低级语言

  • 使用英文缩写的助记符来表示基本的操作,这些助记符构成了汇编语言的基础。比如:LOADMOVE等,使人更容易使用。因此,汇编语言也称为符号语言

  • 优点:能编写高效率的程序,降低了程序设计难度

  • 缺点:

    • 依赖机器:汇编语言是面向机器的,不同计算机机型特点不同,因此会有不同的汇编语言,彼此之间不能通用。程序不易移植,较难调试。

    • 需要汇编器的将汇编语言转化为机器代码。

高级语言

高级语言发展于20世纪50年代中叶到70年代,是一种接近于人们使用习惯的程序设计语言。它允许程序员使用接近日常英语的指令来编写程序,程序中的符号和算式也与日常用的数学式子差不多,接近于自然语言和数学语言,容易为人们掌握。

高级语言独立于机器,有一定的通用性;用高级语言编写的程序称为源程序源代码。;计算机不能直接识别和执行用高级语言编写的程序,需要使用编译器或者解释器,转换为机器语言才能被识别和执行。

  • 解释器:从源代码读取一条语句,将其转换为机器代码或者虚拟机代码,然后立刻运行。注意源代码的一条语句可能被转换成多条机器指令。

  • 编译器将整个源代码转换为机器代码文件,然后执行机器代码文件。

此外,高级语言按照程序设计方法的不同,又分为:面向过程的语言面向对象的语言

  • C、Pascal、Fortran面向过程的语言

  • C++面向过程/面向对象

  • Java跨平台的纯面向对象的语言

  • C#、Python、JavaScript、Scala…

复习题:

  1. CPU能理解什么语言?

  2. 什么是汇编语言?什么是汇编器?

  3. 什么是高级程序语言?什么是源程序?

  4. 什么是解释器?什么是编译器?

  5. 解释语言和编译语言的区别?

计算机操作系统

是运行在计算机上最重要的程序。从操作系统管理和控制计算机的活动。通用计算机流行的操作系统有Microsoft Windows、Mac OS、Linux

操作系统的主要任务:

  • 控制和监视系统活动

  • 分配和调配系统资源

  • 调度操作

    • 技术:多道程序设计、多线程、多处理机

      • 多道程序设计:允许多个程序同时使用CPU,一旦CPU空闲就让别的程序使用它。

      • 多线程允许单个程序同时执行多个任务。

      • 多处理机类似与多线程,区别在于多线程是在单个程序中并行执行多个线程,而多处理机是采用多个处理器来并行处理多个程序。

复习题:

  1. 什么是操作系统?列出一些流行的操作系统?

  2. 操作系统的主要任务?

  3. 什么是多道程序设计、多线程和多处理?

Java语言概述——Code once,run anywhere

  • James GoslingSUN(Stanford University Network,斯坦福大学网络公司 )公司领导的团队开发的,于1995年推出的一门高级编程语言。2010年Sun公司被Oracle收购。

  • 是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(applet),内嵌在HTML代码中。

  • 伴随着互联网的迅猛发展,以及Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。

  • Java特点:

    • 简单的

    • 面向对象的

    • 分布式的

    • 解释型的

    • 健壮的

    • 安全的

    • 架构中立的

    • 可移植的

    • 高性能的

    • 多线程的

    • 动态的

复习题:

  1. Java发明者?现在谁拥有Java?

  2. 什么是Java applet?

  3. 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:集成开发环境

复习题:

  1. 什么是Java语言规范?

  2. JDK代表什么?JRE代表什么?

  3. 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 所解析,生成一套以网页文件形式体现的该程序的说明文档。

复习题:

  1. 什么是关键字?列举一些Java关键字

  2. Java区分大小写吗?Java关键字是大写还是小写?

  3. 什么是注释?编译器悔忽略注释吗?如何标识一行或一段注释?

  4. 在控制台上显示一个字符串的语句是什么?

创建、编译和执行Java程序

Java语言优缺点

Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。“青出于蓝,而胜于蓝”。

优点
  • 跨平台性:这是Java的核心优势。Java在最初设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。

    • 通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once , Run Anywhere”。

    • 原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM ,Java Virtual Machine) 即可。由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

JVMJava Virtual Machine ,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类文件没有被恶意篡改,而且不会危害计算机。

复习题:

  1. Java源文件的拓展名是什么,Java字节码文件的拓展名是什么?

  2. Java编译器的输入输出是什么?

  3. 编译Java程序的命令是什么?

  4. 运行Java程序的命令是什么?

  5. 什么是JVM?

  6. Java可以运行在任何计算机上吗?在一台计算机上运行Java需要什么?

  7. NoClassDefFoundError错误什么原因?

  8. NoSuchMethodError错误什么原因?

程序设计错误

  • 语法错误(Syntax Error):在编译过程中由编译器检测到的错误

  • 运行时错误(Runtime Error):导致程序异常终止的错误

    • 环境检测到一个不可能执行的操作

      • 输入错误:程序希望读入一个数值但是用户输入了一个字符串

    • 除0

  • 逻辑错误(Logic Error):程序没有按预期的方式执行

    • 很难发现

常见错误:

  • 遗漏右括号

  • 遗漏分号

  • 遗漏引号

  • 拼写错误(String-string)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值