第一章 计算机、程序和Java概述

课本笔记 第一章

硬件(hardware)

软件(software)

中央处理器(Central Processing Unit CPU)

CPU由控制单元(control unit CU)和算术逻辑单元(arithmetic / logic unit ALU)两部分组成

每台计算机都有一个内部时钟,该时钟以固定速度发射电子脉冲。这些脉冲用于控制和同步各种操作的步调。时钟速度越快,在给定时间段内执行的指令就越多。时钟速度的计量单位是赫兹(hertz, Hz),1 赫兹相当于每秒 1 个脉冲。20世纪90年代计算机的时钟速度通常是以兆赫(MHz)来表示的。随着CPU速度的不断提高,目前计算机的时钟速度通常以千兆赫(GHz)来表述。Intel公司最新处理器的运行速度大约是3GHz.

1 bit = 0  1
1 byte(B) = 0000 0000 ~ 1111 1111
1 KB = 1024 B  千字节
1 MB = 1024 KB 兆字节
1 GB = 1024 MB 吉字节
1 TB = 1024 GB 太字节
1 PB = 1024 TB 拍字节
1 EB = 1024 PB 艾字节
1 ZB = 1024 EB 泽它字节
1 YB = 1024 ZB 尧它字节

随机访问存储器(Random - Access Memory, RAM)

存储设备有三种类型:驱动器(Drive)

  • 磁盘驱动器

    • 硬盘(hard disk) 容量一般为500GB - 1TB
  • 光盘驱动器(CD 和 DVD)

    • CD指光盘(Compact Disc)分为三种
      • CD - ROM(只读光盘驱动器)
        • 特点:是一种预压缩的光碟,常用于分发软件、音乐和视频
      • CD - R (可录光盘)
        • 是一种一次写入的介质,可用于一次写入、多次读取数据
      • CD - RW(可复写光盘)
        • 可以像磁盘一样使用,可将数据写入光盘,新数据覆盖掉旧数据,容量最高可达700MB
    • DVD是指数字化多功能光盘或者数字化视频光盘。DVD和CD看起来很像,都可以用于存储数据
      • DVD - R (可录DVD)
      • DVD - RW(可复写DVD)
      • 最大存储容量约4.7GB
  • USB 闪存驱动器

    • 通用串行总线(Universal Serial Bus, USB)
    • USB闪存驱动器(flash drive)
      • 用于存储和传输数据的设备。
      • 目前闪存驱动器可以有256GB 的存储容量

输入输出设备

  • 键盘:(keyboard)

    • 功能键(function key)位于键盘的最上方,如F-1 F-2 F-5 F-11 F-12 等等
    • 修饰符键(modifier key)是特殊键,如Shift Alt Ctrl
    • 数字小键盘(numeric keypad)位于键盘的右下角
    • 方向键(arrow key)位于主键盘和数字小键盘之间,用于在各种应用程序中上下左右地移动光标
    • 插入键(Insert)、删除键(Delete)、向上翻页键(Page Up)、向下翻页键(Page Down)分别用于在字处理和其他程序中完成插入文本和对象、删除文本和对象以及向上向下翻页的功能
  • 鼠标(mouse)

  • 显示器(monitor)

    • 屏幕分辨率(screen resolution)是指显示设备水平和垂直维度上的像素数。像素就是构成屏幕上图像的小点。比如,对于一个17英寸的屏幕,分辨率一般宽1024像素、高768像素。分辨率可以手工设置。分辨率越高,图像越锐化、越清晰
    • 点距(dot pitch)是指像素之间以毫米为单位的距离。点距越小,锐化效果越好

通信设备

  • 拨号调制解调器(modulator / demodulator , 调制器/解调器)

    • 传输数据的速度可以高达56 000 bps(bps表示每秒比特)
  • 数字用户线(Digital Subscriber Line, DSL)

    • 使用的是标准电话线,传输数据的速度比标准拨号调制解调器(dial-up modem)快20倍
  • 电缆调制解调器

    • 利用电缆公司维护的有线电视电缆进行数据传输,通常速度比DSL快
  • 有线网络接口卡

    • 网络接口卡(NIC: Network Interface Controller )是将计算机接入局域网(LAN)的设备。
  • 无线适配器

编程语言

  • 计算机程序(Program)称为软件(software)

  • 机器语言(machine language): 即一套内嵌的基本指令集

  • 汇编语言(assembly language): 使用短的描述性单词(称为助记符)来表示每一条机器语言指令。例如助记符add一般表示数字相加,sub表示数字相减。

    add 2,3, result
    

    汇编语言的出现降低了程序设计的难度,然而,由于计算机不理解汇编语言,所以需要使用一种称为汇编器(assembler)的程序将汇编语言程序转换为机器代码。

    汇编语言中的一条指令对应机器代码中的一条指令。用汇编语言写代码需要知道CPU是如何工作的。汇编语言被认为是低级语言,因为汇编语言本质上非常接近机器语言,并且是机器相关的。

高级语言

语言 描述
Ada 以Ada Lovelace(她研究机械式的通用型计算机)命名。Ada是为美国国防部开发的,主要用于国防项目
BASIC 是Beginner's All-purpose Symbolic Instruction Code(初学者通用符号指令代码)的缩写,是为了使初学者易学易用而设计的
C 由贝尔实验室开发。C语言具有汇编语言的强大功能以及高级语言的易学和可移植性
C++ 基于C语言开发,是一种面向对象程序设计语言
C# 读为“C sharp”,是由Microsoft 公司开发的面向对象程序设计语言
COBOL 是COmmon Business Oriented Language(面向通用商业的语言)的缩写,是为商业应用而设计的
FORTRAN 是FORmula TRANslation(公式翻译)的缩写,广泛用于科学和数学应用
Java 由Sun公司(现在属于Oracle)开发,是面向对象程序设计语言,广泛用于开发平台独立的互联网应用程序
JavaScript 是由Netscape公司开发的Web编程语言
Pascal 以Blaise Pascal(Blaise Pascal 是17世纪计算机器的先驱)命名。Pascal 是一个简单的、结构化的、通用目的的语言,主要用于编程教学
Python 是一种简单的通用目的的脚本语言,适合编写小程序
Visual Basic 由Microsoft 公司开发,方便编程人员快速开发基于Windows 的应用

用高级语言编写的程序称为源程序(source program)或源代码(source code)。由于计算机不能运行源程序,源程序必须被翻译成可执行的机器代码。翻译可以由另外一种称为解释器或者编译器的编程工具来完成。

  • 解释器从源代码中读取一条语句,将其翻译为机器代码或者虚拟机器代码,然后立刻运行。注意来自源代码的一条语句可能被翻译为多条机器指令。
  • 编译器将整个源代码翻译为机器代码文件,然后执行该机器代码文件。

操作系统(Operating System,OS)

  • 是运行在计算机上的最重要的程序,它可以管理和控制计算机的活动
  • 常用的操作系统有Microsoft Windows 、MacOS以及Linux

操作系统的主要任务

  • 控制和监视系统活动
    • 操作系统执行基本的任务,如,识别来自键盘的输入,向显示器发送输出结果,跟踪存储设备中文件和文件夹的动态,控制类似硬盘驱动器和打印机这样的外部设备。操作系统还要确保不同的程序和用户同时使用计算机时不会相互干扰。另外,操作系统还负责安全处理,以确保未经授权的用户和程序无权访问系统。
  • 分配和调配系统资源
    • 操作系统负责确定一个程序需要使用哪些计算机资源(如:CPU)
  • 调度操作
    • 操作系统负责调度程序的活动,以便有效地利用系统资源。为了提高系统的性能,目前许多操作系统都支持像多道程序设计(multiprogramming)、多线程(multithreading)和多处理(multiprocessing)这样的技术。
    • 多道程序设计允许多个程序(比如Microsoft Word、E - mail以及Web浏览器)通过共享同一个CPU同时运行。CPU的速度比其他组件快得多,这样,多数时间它都处于空闲状态,例如,等待数据从磁盘传入、或者等待其他系统资源响应。多道程序设计操作系统利用这一特点,允许多个程序同时使用CPU,一旦CPU空闲就让别的程序使用它。例如,在Web浏览器下载文件的同时,可以用字处理程序来编辑文件。
    • 多线程允许单个程序同时执行多个任务。例如,字处理程序允许用户在编辑文本的同时给,将其保存到文件。在这个例子中,编辑和保存是同一个应用程序的两个不同任务,这两个任务可以并行运行。
    • 多处理类似于多线程。区别在于多线程是在单个程序中并行运行多个线程,而多处理是采用多个处理器来并行运行多个程序

JAVA、万维网以及其他

  • Java是由 James Gosling 在 Sun 公司领导的小组开发的。(2010年Sun公司被 Oracle 收购)。Java最初被称为Oak(橡树),是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为 Java ,并重新设计用于开发Web应用程序。关于Java的历史,参见www.java.com/en/javahistory/index.jsp

Java的特点

  • 简单的(Simple)
  • 面向对象的(Object oriented)
  • 分布式的(distributed)
  • 解释型的(interpreted)
  • 健壮的(robust)
  • 安全的(secure)
  • 体系结构中立的(architecture neutral)
  • 可移植的(portable)
  • 高性能的(high performance)
  • 多线程的(multithreading)
  • 动态的(dynamic)

万维网(WWW World Wide Web)

Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这种能在Web浏览器中运行的Java程序称为Java小程序(applet)

Java语言规范、API、JDK、JRE和IDE

  • Java语言规范(Java language specification)定义了Java的语法,Java库则在Java应用程序接口(API: Application program interface )中定义。
    • 是对 Java 程序设计语言的语法和语义的技术定义。完整的 Java 语言规范可以在www.docs.oracle.com/javase/specs/上找到
    • API也称为库,包含了为开发Java程序而预定义的类和接口。API仍然在扩展,在网站www.download.java.net/jdk8/docs/api上,可以查看和下载最新版的 Java API
  • JDK( Java Developer's Kit )是用于开发和运行Java程序的软件。
  • IDE( Integrated Development Environment )是快速开发程序的集成也能够开发环境。

Java 是一个全面且功能强大的语言,可用于多种用途。Java有三个版本:

  • Java 标准版(Java Standard Edition, Java SE)可以用来开发客户端的应用程序。应用程序可以在桌面计算机中运行
  • Java 企业版(Java Enterprise Edition , Java EE)用来开发服务器端的应用程序,例如,Java servlet 和 JavaServer Pages (JSP),以及 JavaServer Faces(JSF)
  • Java微型版(Java Micro Edition,Java ME)用来开发移动设备的应用程序,例如手机。

本书使用 Java SE 介绍 Java程序设计。Java SE 是基础,其他 Java 技术都基于Java SE。Java SE也有很多版本,本书采用最新的版本 Java SE 8 。Oracle 发布 Java 的各个版本都带有 Java 开发工具包(Java Development Toolkit, JDK)。Java SE 8 对应的 Java 开发工具包也称为 JDK 1.8(也称为 Java 8 或者 JDK 8 )

  • JDk由一组独立程序构成,每个程序都是从命令行调用的,用于编译、运行和测试Java程序。运行Java程序的程序称为 JRE (Java Runtime Environment)。除了JDK,还可以使用某种 Java开发工具(例如,NetBeans、Eclipse TextPad)----为了快速开发Java程序而提供集成开发环境(Integrated Development Environment,IDE)的软件。编辑、编译、构建、调试和在线帮助都集成在一个图形用户界面中,这样,只需在一个窗口中输入源代码或在窗口中打开已有的文件,然后单击按钮,菜单选项或者使用功能键就可以编译和运行源代码。

一个简单的Java程序

控制台(Console)

程序清单 1-1 Welcome.java

public class Welcome{
	public static void main (String[] args){
	//Display message Welcome to Java! on the console
	System.out.println("Welcome to Java!");
	}
}

类名(class name )字符串(string)语句结束符(statement terminator)保留字(reserved word)或关键字(keyword)注释(comment)行注释(line comment)块注释(block comment)类块(class block)方法块(method block)。块是可以嵌套的,即一个块可以放到另一个块内。如下所示:

public class Welcome{//<---------------------------------------------------
	public static void main (String[] args){<-------------------       类块
	//Display message Welcome to Java! on the console    -方法块-       ----
	System.out.println("Welcome to Java!");//            -------   	   ----
	}//<--------------------------------------------------------       ----
}//<-----------------------------------------------------------------------
  • 提示: 一个左括号必须匹配一个右括号。任何时候,当输入一个左括号时,应该立即输入一个右括号来防止出现遗漏括号的错误。大多数Java IDE 都会自动为每个左括号插入一个右括号。
  • Java程序区分大小写
字符 名称 描述
左花括号和右花括号 表示一个包含语句的块
( ) 左圆括号和右圆括号 和方法一起使用
[ ] 左方括号和右方括号 表示一个数组
/ / 双斜杠 表示后面是一行注释
" " 左引号和右引号 包含一个字符串(即一系列的字符)
; 分号 标识一个语句的结束

程序清单 1-2 WelcomeWithThreeMessages.java

public class WelcomeWithThreeMessages {
    public static void main(String[] args) {
        /**
         * 编程是快乐的
         * 基础第一
         * 问题驱动
         */
        System.out.println("Programming is fun!");
        System.out.println("Fundamentals First");
        System.out.println("Problem Driven");
    }
}

程序清单 1-3 ComputerExpression.java

public class ComputerExpression {
    public static void main(String[] args) {
        System.out.print("(10.5 + 2 * 3) / (45 - 3.5) = ");
        System.out.println((10.5 + 2 * 3) / (45 - 3.5));
    }
}

创建、编译和执行Java程序

  • Java源程序保存为 .java文件,编译为 .class文件 .class文件由 Java虚拟机(JVM:Java virtual machine)执行

  • 源代码的扩展名必须是 .java ,而且文件名必须与公共类名完全相同。例如,程序清单1-1中源代码的文件必须命名为Welcome.java,因为公共类的类名为Welcome。

  • Java 编译器将 Java 源文件翻译成 Java字节码文件。

  • 在编译和运行程序前必须先安装和配置JDK

  • 编译器(Compiler)就会生成一个扩展名为 .class的字节码文件,字节码类似于机器指令,但它是体系结构中立的,可以在任何带Java虚拟机(JVM)的平台上运行。虚拟机不是物理机器,而是一个解释 Java 字节码的程序。这正是 Java的主要优点之一: Java字节码在不同的硬件平台和操作系统上运行。Java源代码编译成Java字节码,然后Java字节码被 JVM 解释执行。

  • 使用命令行执行程序时,不要使用扩展名.class。使用java ClassName来运行程序。如果在命令行使用java ClassName.class.class

  • 如果运行一个不存在的类文件,就会出现NoClassDefFoundError的错误。如果执行的类文件中没有main方法或敲错了main方法(例如,将main错敲成Main),则会出现提示NoSuchMethodError.

  • 在运行一个Java程序时,JVM首先会用一个类加载器(class loader)的程序将类的字节码加载到内存中。如果你的程序中还使用了其他类,类加载程序会在需要它们之前动态地加载它们。当加载该类后,JVM使用一个称为字节码验证器(bytecode verifier)的程序来检验字节码的合法性,确保字节码没有违反 Java 的安全规范。Java 强制执行严格的安全 规范,以确保Java类文件没有被恶意篡改,也不会危害你的计算机。

程序设计风格和文档

程序设计风格(programming style) 文档(documentation)Java 文档注释(javadoc comment)/** */

程序设计错误

==程序清单 1-4 ShowSyntaxErrors.java

  • 语法错误(syntax error)
public class ShowSyntaxErrors {
    public static void main(String[] args) {
//        语法错误
//        少一个main  少一个后 引号 "
        System.out.println("Welcome to Java");
    }
}
  • 运行时错误(runtime error)

==程序清单 1-5 ShowRuntimeErrors.java

public class ShowRuntimeErrors {
    public static void main(String[] args) {
        System.out.println(1/0);
//        运行时错误
        /**
         * 报错信息:
         * Exception in thread "main" java.lang.ArithmeticException: / by zero
         * 	at Chapter01.ShowRuntimeErrors.main(ShowRuntimeErrors.java:5)
         */
    }
}
  • 逻辑错误(logic error)

==程序清单 1-6 ShowLogicErrors.java

public class ShowLogicErrors {
    public static void main(String[] args) {
        System.out.print("Celsius 35 is Fahrenheit degree ");
//        逻辑错误
//        System.out.println((9 / 5) * 35 + 32);//Error
        System.out.println((9.0 / 5) * 35 + 32);
        /**
         * 9 / 5 取整报错
         */
    }
}

使用NetBeans开发Java程序

使用Eclipse开发Java程序

主板(motherboard) 存储设备(storage device)

posted @ 2021-10-07 15:56  Wozen  阅读(497)  评论(0)    收藏  举报