Java程序设计

李蓉蓉

目录

  • 1 Java概述
    • 1.1 课程说课
    • 1.2 本章学习导言
    • 1.3 课件
    • 1.4 课程视频
    • 1.5 Java课程学习方法及目标
    • 1.6 开发环境及实验指导
    • 1.7 思政小课堂
    • 1.8 本章测验
  • 2 Java语言基础
    • 2.1 标识符与关键字
      • 2.1.1 学习任务单与导图
      • 2.1.2 课件
      • 2.1.3 课程视频
      • 2.1.4 本节测验
    • 2.2 Java数据类型
      • 2.2.1 学习任务单与导图
      • 2.2.2 课件
      • 2.2.3 课程视频
      • 2.2.4 本节测验
    • 2.3 运算符与表达式
      • 2.3.1 学习任务单与导图
      • 2.3.2 课程视频
      • 2.3.3 课件
      • 2.3.4 本节测验
    • 2.4 控制结构
      • 2.4.1 学习任务单与导图
      • 2.4.2 课件
      • 2.4.3 课程视频
      • 2.4.4 编程实践-模拟购物结算
      • 2.4.5 本节测验
    • 2.5 数组和方法
      • 2.5.1 学习任务单与导图
      • 2.5.2 课件
      • 2.5.3 课程视频
      • 2.5.4 编程实践-约瑟夫环问题
      • 2.5.5 本节测验
    • 2.6 字符串处理
      • 2.6.1 学习任务单与导图
      • 2.6.2 课件
      • 2.6.3 课程视频
      • 2.6.4 编程实践-中英文词汇对照
      • 2.6.5 编程实践-单词统计
      • 2.6.6 本节测验
    • 2.7 本章小结
    • 2.8 本章测验
  • 3 面向对象程序设计
    • 3.1 类与对象
      • 3.1.1 学习任务单与导图
      • 3.1.2 课件
      • 3.1.3 课程视频
      • 3.1.4 编程实践-求解三角形
      • 3.1.5 编程实践-类与对象实践
      • 3.1.6 本节测验
    • 3.2 继承与多态
      • 3.2.1 学习任务单与导图
      • 3.2.2 课件
      • 3.2.3 课程视频
      • 3.2.4 编程实践-继承与多态应用
      • 3.2.5 本节测验
    • 3.3 抽象类、接口、内部类
      • 3.3.1 学习任务单与导图
      • 3.3.2 课程视频
      • 3.3.3 课件
      • 3.3.4 编程实践-接口设计
      • 3.3.5 本节测验
    • 3.4 本章测验
  • 4 系统类库和框架集合
    • 4.1 Math类
      • 4.1.1 课程学习视频
      • 4.1.2 课件
      • 4.1.3 分析与实践
      • 4.1.4 思政小课堂
      • 4.1.5 本节测验
    • 4.2 时间日期类
      • 4.2.1 课程视频
      • 4.2.2 课件
      • 4.2.3 编程实践-世纪末的星期之谜
      • 4.2.4 编程实践-月历打印
      • 4.2.5 本节测验
    • 4.3 泛型和集合框架
      • 4.3.1 学习任务单与导图
      • 4.3.2 课程视频
      • 4.3.3 课件
      • 4.3.4 编程实践-猴子选大王
      • 4.3.5 编程实践-模拟斗地主发牌
      • 4.3.6 本节测验
      • 4.3.7 Java程序设计-课堂实录
    • 4.4 实验指导
    • 4.5 本章测验
  • 5 异常处理
    • 5.1 异常处理机制及方法
      • 5.1.1 学习任务单及导图
      • 5.1.2 课程视频
      • 5.1.3 课件
      • 5.1.4 拓展阅读:​DEBUG与格雷斯·霍珀
    • 5.2 异常处理方法
      • 5.2.1 学习任务单及导图
      • 5.2.2 课程视频
      • 5.2.3 课件
      • 5.2.4 编程实践-求解方程根
      • 5.2.5 思政小课堂
    • 5.3 本章测验
  • 6 I/O流与文件
    • 6.1 面向字节的输入输出流
      • 6.1.1 学习任务单与导图
      • 6.1.2 课程视频
      • 6.1.3 课件
      • 6.1.4 编程实践-文件复制器
    • 6.2 面向字符的输入输出流
      • 6.2.1 课程视频
    • 6.3 Java中文件与目录管理
      • 6.3.1 学习任务单与导图
      • 6.3.2 课程视频
      • 6.3.3 编程实践-显示文件夹信息
      • 6.3.4 编程实践-递归方法删除文件夹
      • 6.3.5 课件
    • 6.4 文件随机读写
    • 6.5 实验指导
    • 6.6 本章测验
  • 7 线程
    • 7.1 本章学习导言
    • 7.2 Java线程及相关概念
      • 7.2.1 课程视频
      • 7.2.2 课件
    • 7.3 多线程实现的两种方法
      • 7.3.1 课程视频
    • 7.4 线程控制与线程同步机制
      • 7.4.1 课程视频
      • 7.4.2 编程实践-过桥问题
      • 7.4.3 编程实践-生产者/消费者问题
      • 7.4.4 线程同步机制
    • 7.5 本章测验
  • 8 数据库访问
    • 8.1 本章学习导言
    • 8.2 关系数据库与JDBC
      • 8.2.1 课程视频
      • 8.2.2 课件
    • 8.3 JDBC应用
      • 8.3.1 编程实践
      • 8.3.2 代码文档
    • 8.4 课程思政小课堂
    • 8.5 本章测验
  • 9 图形用户界面设计
    • 9.1 本章学习导言
    • 9.2 AWT与Swing简介
    • 9.3 基本容器JFrame和GUI程序
    • 9.4 布局管理器
    • 9.5 事件
    • 9.6 常用Swing组件
    • 9.7 菜单
    • 9.8 编程实践-字体设置器
    • 9.9 本章小结
    • 9.10 本章测验
  • 10 网络编程
    • 10.1 本章学习导言
    • 10.2 基于Socket的网络编程
    • 10.3 基于UDP的网络编程
    • 10.4 基于URL类的网络编程
    • 10.5 编程实践-网络编程实验
  • 11 综合训练任务
    • 11.1 月历程序设计
    • 11.2 英汉释义小词典
    • 11.3 聊天应用程序设计
    • 11.4 20物联网工程3班 赵国彤 拼图游戏程序
    • 11.5 20物联网工程3班 卢健聪 2048游戏程序设计
    • 11.6 20物联网工程1班 曹方贤 学生信息管理系统程序设计
    • 11.7 20物联网工程1班 李坚俊 聊天室程序设计
    • 11.8 23软工2-董卓凡-扫雷游戏设计
    • 11.9 23软工2-刘畅-迷宫游戏设计
    • 11.10 23软工1-姚韩俊-拼图游戏设计
    • 11.11 23软工1-蔡树泽-聊天室
    • 11.12 23软件2-董悦德-贪吃蛇
面向字节的输入输出流
  • 1 输入输出基本概念
  • 2 面向字节的输入流
  • 3 面向字节的输出流
  • 4 过滤流
  • 5 应用

输入输出基本概念

输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作。几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等。通过输入和输出操作可以从外界接收信息,或者是把信息传递给外界。Java把这些输入与输出操作用流来实现,通过统一的接口来表示,从而使程序设计更为简单。

Java流的概念

流(Stream)是指在计算机的输入输出操作中各部件之间的数据流动。按照数据的传输方向,流可分为输入流与输出流。Java语言里的流序列中的数据既可以是未经加工的原始二进制数据,也可以是经过一定编码处理后符合某种特定格式的数据。

1.输入输出流

在Java中,把不同类型的输入输出源抽象为流,其中输入和输出的数据称为数据流(Data Stream)。数据流是Java程序发送和接收数据的一个通道,数据流中包括输入流(Input Stream)和输出流(Output Stream)。通常应用程序中使用输入流读出数据,输出流写入数据。 流式输入、输出的特点是数据的获取和发送均沿数据序列顺序进行。相对于程序来说,输出流是往存储介质或数据通道写入数据,而输入流是从存储介质或数据通道中读取数据,一般来说关于流的特性有下面几点:

(1)先进先出,最先写入输出流的数据最先被输入流读取到。

(2)顺序存取,可以一个接一个地往流中写入一串字节,读出时也将按写入顺序读取一串字节,不能随机访问中间的数据。

(3)只读或只写,每个流只能是输入流或输出流的一种,不能同时具备两个功能,在一个数据传输通道中,如果既要写入数据,又要读取数据,则要分别提供两个流。

2.缓冲流

为了提高数据的传输效率,引入了缓冲流(Buffered Stream)的概念,即为一个流配备一个缓冲区(Buffer),一个缓冲区就是专门用于传送数据的一块内存。

当向一个缓冲流写入数据时,系统将数据发送到缓冲区,而不是直接发送到外部设备。缓冲区自动记录数据,当缓冲区满时,系统将数据全部发送到相应的外部设备。当从一个缓冲流中读取数据时,系统实际是从缓冲区中读取数据,当缓冲区为空时,系统就会从相关外部设备自动读取数据,并读取尽可能多的数据填满缓冲区。 使用数据流来处理输入输出的目的是使程序的输入输出操作独立于相关设备,由于程序不需关注具体设备实现的细节(具体细节由系统处理),所以对于各种输入输出设备,只要针对流做处理即可,不需修改源程序,从而增强了程序的可移植性。

I/O流类概述

为了方便流的处理,Java语言提供了java.io包,在该包中的每一个类都代表了一种特定的输入或输出流。为了使用这些流类,编程时需要引入这个包。 Java提供了两种类型的输入输出流:一种是面向字节的流,数据的处理以字节为基本单位;另一种是面向字符的流,用于字符数据的处理。字节流(Byte Stream)每次读写8位二进制数,也称为二进制字节流或位流。字符流一次读写16位二进制数,并将其做一个字符而不是二进制位来处理。需要注意的是,为满足字符的国际化表示,Java语言的字符编码采用的是16位的Unicode码,而普通文本文件中采用的是8位ASCⅡ码。java.io中类的层次结构如图。


image

针对一些频繁的设备交互,Java语言系统预定了3个可以直接使用的流对象,分别是:

(1)System.in(标准输入),通常代表键盘输入。

(2)System.out(标准输出):通常写往显示器。

(3)System.err(标准错误输出):通常写往显示器。

在Java语言中使用字节流和字符流的步骤基本相同,以输入流为例,首先创建一个与数据源相关的流对象,然后利用流对象的方法从流输入数据,最后执行close()方法关闭流。