版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java高级程序设计第1章 Java入门基础第1章 Java入门基础1.1 Java开发环境的安装与配置1.2 Java语言基础1.3 Java面向对象编程基础本章目标 Java Application开发环境的安装和配置 Java语言基础 Java面向对象编程基础本章任务任务1 安装和配置JDK、Eclipse任务2 Eclipse中开发Java Application任务3 实现四则运算任务4 找出100以内的所有素数任务5 定义类、使用对象任务6 运用继承1.1 Java开发环境的安装与配置任务1 安装和配置JDK、EclipseStep1:下载JDKStep2:配置JDKStep3:下
2、载EclipseStep4:配置Eclipse工作空间任务2 Eclipse中开发Java ApplicationStep1:新建项目Step2:创建和编辑Java类Step3:运行并查看输出知识点:Java Application程序一个Java Application程序往往由若干个类组成,其中包含public static void main(String args)方法的类是主类,main()方法是Java Application程序的执行入口,由JVM调用执行。1.2Java语言基础任务3 实现四则运算编程实现2个数据的四则运算功能:用户输入2个数据,显示这2个数分别进行加、减、乘、
3、除法运算后的结果,运行效果如图所示。知识点:Java语法基础一、标识符和关键字二、数据类型三、运算符任务4 找出100以内的所有素数编程实现:找出100以内的所有素数并输出。运行效果如图所示。知识点:Java的流程控制语句一、分支语句二、循环语句三、跳转语句1.3Java面向对象编程基础任务5 定义类、使用对象编程实现:描述学生对象,学生基本信息包括学号、班级、姓名、性别、年龄;提供显示学生基本信息的功能;提供计算3门课程平均分的功能,假定课程分数直接指定。运行效果如图所示。知识点:类与对象任务6 运用继承编程实现:用Person类描述人的一般属性,用继承方式创建新类Student和Teach
4、er,分别用于描述特定的人群学生和教师,分别创建学生对象、教师对象,并显示他们的相关信息。运行效果如图所示。知识点:包和访问控制符、继承、接口一、包和访问控制符 访问控制符可访问范围private缺省protectedpublic同一类中可见是是是是同一个包中对子类可见否是是是同一个包中对非子类可见否是是是不同包中对子类可见否否是是不同的包中对非子类可见否否否是二、继承 继承是面向对象编程技术的一块基石,因为它允许建立分等级层次的类,使得程序结构清晰,降低编码和维护的工作量。三、接口 接口只包含若干个抽象方法和常量的定义,形成一个属性集合,该属性集合通常对应了某一组功能,其主要作用是可以帮助实
5、现类似于类的多重继承的功能。实训任务实训 1-1 编写一个Java Application,接受用户输入的10个整数,比较并输出其中的最大值和最小值。实训 1-2 编写一个Java Application,接受用户输入的一个112之间的整数(如果输入的数据不满足这个条件,则要求用户重新输入),利用switch语句输出对应月份的天数。实训 1-3 编写一个Java Application,输入一个人的成绩,判断他是否是及格、不及格或优秀。实训任务实训 1-4 编写一个Java Application,接受用户输入的字符,比较并输出按字典顺序排序的字符。实训 1-5 定义一个表示学生的类Stude
6、nt,包括属性 “学号”、“班号”、“姓名”、“性别”、“年龄”;方法“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”(汉字或数字)、“修改年龄”,并在此基础上编写Java Application程序创建Student类的对象张一、王二,并显示他们的信息。实训任务实训 1-6 创建一个Rectangle类,该类拥有属性length和width,每个属性的默认值均为1;该类拥有方法perimeter和area,分别用于计算矩形的周长和面积;该类还有设置和读取属性length和width的方法。创建一个Rectangle类的子类,设置方法应检查length和width的属性值是
7、否大于0.0且小于20.0的浮点数,在此基础上编写程序测试Rectangle类。实训任务实训 1-7 一家大公司对售货员按任务提成发放工资。每个售货员的基本工资是每周200元,另外提成为本周个人总零售额的9%。 例如,某个售货员在一周内推销了总额为5000元的商品,那他在这一周内的工资为基本工资200元加上5000元乘以9%,即650元。公司提供了上周每个售货员的销售清单,每种商品的价格如下: 商品 价格 1 233.99 2 129.75 3 199.95 4 350.89 开发一个Java应用程序,输入一个售货员上周销售的商品类型和数量,然后计算并显示这个销售员的收入,对销售员所推销的商品
8、数量没有限制。Java高级程序设计第2章 异常处理第2章 异常处理2.1什么是异常2.2处理异常2.3自定义异常与throw关键字2.4throws关键字2.5Java的内置异常本章目标 理解异常及其作用 使用try-catch-finally语句捕获和处理异常 使用throw、throws关键字本章任务任务1 识别异常任务2 处理异常任务3 自定义百分制分数异常任务4 使用throws关键字2.1什么是异常任务1 识别异常编程实现整数除法运算:接收用户输入的2个整数,除法运算后输出结果。根据用户的不同输入,可能产生如图所示的不同结果。知识点:异常的概念、异常处理机制一、异常的概念程序开发中一
9、般会出现两种问题:第一种,在编译期间被检测出来的错误,我们称之为语法错误,比如关键字拼写错误、语句丢失分号、变量名未定义等。如果程序中存在这类错误,将不能编译通过,不能生成字节码。第二种,没有语法错误编译成功了,但在程序运行期间出现错误,我们称之为运行错误,比如被访问对象没有正常初始化、访问数组元素时下标值超出范围等等。这种运行错误如果没有得到及时的处理,可能会造成程序提前中断、数据遗失乃至系统崩溃等问题。这种运行错误也就是我们所说的“异常”。二、异常处理机制 为了解决这种需要由程序员承担程序出错情况判断的不正规处理模式所带来的困难和阻碍,Java引入了异常处理机制,通过代码运行到出现错误的时
10、候由系统抛出一个运行时异常,Java程序可以很容易地捕获并处理发生的异常情况。Java的异常类层次结构2.2处理异常任务2 处理异常完善任务1中的IntDivide程序,对除法运算中除数为0的异常进行处理,即使用户输入0值不能进行除法运算时也不会再粗鲁地直接中断程序执行了,运行效果如图所示。知识点:try-catch-finally语句处理异常try /需要监视异常的代码块,该区域如果发生异常就匹配catch来决定程序如何处理catch(异常类型1 异常的变量名1)/处理异常语句组1catch(异常类型2 异常的变量名2)/处理异常语句组2 finally/最终执行的语句组2.3自定义异常与t
11、hrow关键字任务3 自定义百分制分数异常编程实现:根据用户输入的分数判定成绩等级并输出。分数规定为百分制,一旦用户输入的分数不符合百分制分数要求,则请用户重新输入,直至输入分数正确,判定等级并输出为止。运行效果如图所示。知识点:自定义异常、throw关键字一、自定义异常 / 变量、构造方法、成员方法二、throw关键字 ;2.4throws关键字任务4 使用throws关键字编程实现与任务3相同的根据分数判定等级并输出的功能。 代码要求:将根据分数判等级的功能定义为方法,且方法内部不处理分数异常,而是将异常抛出给其调用者来进行处理。知识点:throws关键字为方法声明异常方法声明 , /方法
12、体,抛出异常2.5Java的内置异常在核心语言包java.lang中,Java定义了若干异常类型,其中多数从RuntimeException派生的异常都自动可用,它们不需要通知所有欲调用此方法的方法来检查该异常,因此不需要被包含在任何方法的throws列表中,也可以不用try-catch捕获和处理。Java语言中,这样的异常被称作不受控异常(unchecked exceptions)。还有一些异常类型,它们必须由try-catch进行捕获和处理,或者不用try-catch捕获则应包含在方法声明的throws列表中,由方法的调用者进行捕获和处理,否则编译将不能通过,这样的异常称作受控的异常(ch
13、ecked exceptions)。实训任务实训 2-1 编写一个User类,类中包含String类型成员变量username和password,在默认构造方法中将username赋值为“admin”,密码赋值为“1234”。定义checkUser(String username,String password)方法,要求当参数username与类成员变量username不相符时抛出自定义异常NoSuchUserException,当用户名正确而password和类成员变量password不相符时抛出自定义异常PasswordDontMatchException。实训任务实训 2-2 创建帐户
14、类,其中定义存钱、取钱、查询余额等三个方法,并自定义如下异常类型用于账户类:(1)AccountOverdrawnException:当有了这个要取出比帐户上更多的钱的尝试时。(2)InvalidDepositException:当无效钱数(小于0)存入时。Java高级程序设计第3章 Java常用API第3章 Java常用API3.1API的概念3.2字符串处理3.3数学运算工具Math3.4日期时间处理3.5集合类3.6泛型本章目标 常见字符串处理 数学函数的运用、日期时间的处理 集合、迭代器的运用本章任务任务1 字符串加密与解密任务2 统计单词及其数量任务3 常见数学运算任务4 格式化日期
15、任务5 保存和显示学生列表任务6 使用Set保存和显示学生集合任务7 使用Map保存和显示学生集合3.1API的概念 Java的类库是系统提供的已实现的标准类的集合,统称为Java应用程序编程接口,即Java API(Application Program Interface)3.2字符串处理任务1 字符串加密与解密编程实现将用户输入的字符串按照一定规则进行加密,同时也实现能将加密后的字符串解密的功能,运行效果如图所示。知识点:String、StringBuffer一、String字符串是程序设计中经常使用到的数据结构,它是字符的序列。两大类:1、创建之后不会再做修改和变动的字符串常量类型St
16、ring2、创建之后允许再做更改和变化的字符串变量类型StringBufferString类的常用构造方法,见教材表3-2 String类的常用方法,见教材表3-3String的常见应用,见教材例程3-1至3-6二、StringBufferStringBuffer表示可扩充、可修改的字符序列,是可变长的字符串。StringBuffer可有插入其中或追加其后的字符或子字符串,StringBuffer可以针对这些添加自动地增加空间,并增加更多的预留字符。StringBuffer类的常用构造方法,见教材表3-4StringBuffer的常见应用,见教材例程3-7、3-8任务2 统计单词及其数量编程实
17、现一个统计单词及其数量的程序,分析给定的字符串,将其中的单词分离出来,并统计单词的数量,运行效果如图所示。知识点:StringTokenizer类分析字符串并将字符串分解成可被独立使用的单词,可以使用java.util包中的StringTokenizer类。使用StringTokenizer时,指定一个输入字符串和一个包含了分隔符的字符串。分隔符是分隔标记的字符,如空格符、换行符、回车符、Tab符等等。StringTokenizer的构造方法,见教材表3-5StringTokenizer的常用方法,见教材表3-63.3数学运算工具Math任务3 常见数学运算编程实现常见的数学运算,效果如图所示
18、。知识点:Math类Math类用来完成一些常用的数学运算,它提供了若干实现不同标准数学函数的方法。Math中的常用方法,见教材表3-73.4日期时间处理任务4 格式化日期编程实现将日期按照格式“xxxx年xx月xx日”输出,效果如图所示。知识点:Date、DateFormat、Calendar一、Datejava.util.Date包装了一个long类型数据,表示与GMT(格林尼治标准时间)的1970年1月1日00:00:00这一时刻所相距的毫秒数。二、DateFormat和SimpleDateFormatjava.text.DateFormat 抽象类可以用于定制日期的格式SimpleDat
19、eFormat是DateFormat的子类,它允许用户更具体地定制日期时间的格式三、Calendar和GregorianCalendarCalendar,提供了一组方法允许将以毫秒为单位的时间转换为一组有意义的分量GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统3.5集合类一、集合类概述集合是一种数据结构,可以包含其他对象的引用,相当于装载其它对象的容器。Java集合API分为两大类,以Collection为接口的元素集合类型,以Map为接口的映射集合类型。Java的集合框架二、Collection和IteratorCol
20、lection接口提供了一个iterator()方法,用于获取集合中所有元素的迭代器,可以用此对象依次访问集合中的元素。使用Iterator遍历集合(如下代码中的coll)中元素的代码模板如下:Iterator iter = coll.iterator( ); while (iter.hasNext( ) Object obj = iter.next(); /对obj的其它操作任务5 保存和显示学生列表编程实现用集合存一个学生列表,并将各学生的信息显示出来,效果如图所示。知识点:List接口及实现类List接口是一种能包含重复元素的有序集合,与数组一样,List的首元素的索引也是0。List集
21、合的特征:元素有序排列;可以有重复元素;可以随机访问,使用元素索引添加、删除、访问元素等。任务6 使用Set保存和显示学生集合编程实现用Set集合存一个学生列表,并将各学生的信息显示出来,效果如图所示。知识点:Set接口及实现类Set接口是一种无重复元素的集合。集合API中包含多种Set实现类,主要为HashSet、TreeSet、SortedSet及LinkedHashSet。任务7 使用Map保存和显示学生集合编程实现用Set集合存一个学生列表,并将各学生的信息显示出来,效果如图所示。知识点:Map接口及实现类Map映射类储存的数据是“键/值”对,将“键”与“值”关联起来,给出键key就可
22、以查找到与之相关的值valueMap接口是映射类的顶层接口,SortedMap接口提供了排序功能,最经常使用到的已实现Map接口的类有HashMap和TreeMap。3.6泛型泛型是在J2SE 1.5中引入的新特性泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数,此参数类型可以用在类、接口和方法的声明及创建中,分别被称为泛型类、泛型接口及泛型方法使用泛型的优点编译器在编译时进行严格地类型安全检查,最大可能地消除了强制类型转换可能引起系统安全隐患所有的强制类型转换都是自动和隐式进行,提高了代码的重用率实训任务实训 3-1 编程判断一个字符串是否是回文。实训 3-2 将“2013-10-
23、24”格式的日期字符串转换成“2013年10月24日”。实训 3-3 接受用户输入的若干字符串,并按字典序排序后输出。实训 3-4 计算某年、某月、某日和某年、某月、某日之间的天数间隔。实训任务实训 3-5 接受用户输入的一个字符串和一个字符,把字符串中所有指定的字符删除后输出。实训 3-6 使用集合类,存储班级内所有学生的基本信息,并打印所有同学的姓名。实训3-7 使用映射类,存储班级内所有学生的基本信息,存储时根据学号进行排序,并打印出所有同学的学号及姓名、性别。Java高级程序设计第4章 GUI程序设计第4章 GUI程序设计4.1认识GUI程序4.2容器与布局4.3GUI基本元素4.4菜
24、单与工具栏4.5对话框4.6表格本章目标 创建图形用户界面 实现界面与用户的交互 使用Swing常用组件本章任务任务1 登陆窗体任务2 登陆验证功能任务3 图形用户界面的四则运算任务4 文本复制任务5 字体选择器任务6 简单记事本界面任务7 确认退出对话框任务8 使用表格4.1认识GUI程序任务1 登陆窗体编程实现一个登陆窗体,这在信息管理系统中是及其常见的。效果如图所示。知识点:Swing包、创建窗体一、Swing包GUI,即图形用户界面(Graphics User Interface),它是用户与应用程序之间的一个交互接口。Java中,为了方便GUI程序的开发,设计了专门的类库来生成各种标
25、准图形界面元素,Swing组件便是其中常用的一种,类库是javax.swing包。Swing相关的包,见教材表4-1常用Swing组件类层次图,见教材图4-2二、创建窗体1、窗体JFrameJFrame 类就是一个顶层容器类,允许用户把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。JFrame的常用方法,见教材表4-22、标签JLabelJLabel类是一个用来在界面上显示文本或图像的类,创建标签时即可指定要显示的文本或图像,但运行时它们不能被用户修改。标签不能响应输入事件,不能与用户交互,即不能像按钮那样点击后程序可以做出某种响应,标签主要用来显示。3、按钮JButton按钮JB
26、utton类是图形界面中使用最多的一个组件,使用按钮可以与用户交互,响应鼠标的点击,可以完成用户想要完成的一些功能。JButton是继承自抽象类AbstractButton的,该抽象类中定义了许多组件的设置和处理的方法,AbstractButton类的常用方法见教材表4-34、文本框JTextField和密码框JPasswordFieldSwing中与文字输入有关的组件主要包括JTextField、JTextArea、JPasswordField和JTextPane,其中JTextField、JPasswordField是单行的文本输入组件,JTextArea是多行的文本输入组件,JTextP
27、ane可以设置其中文本的格式,它们都继承自JTextComponent类JTextComponent类的常用方法,见教材表4-4任务2 登陆验证功能完善任务1,令登陆窗体可以响应用户的登陆请求,在用户输入账号、密码,并点击“登陆”按钮后进行身份验证,并反馈登陆成功与否的信息。运行效果如图所示。知识点:事件处理机制当GUI上的组件与用户发生交互,触发一定的事件后执行相应的事件处理代码,使得GUI能“动”起来的这种机制就叫做事件处理机制。Java采用叫做授权事件模型(Delegation Event Mode)的事件处理机制,也称为委托事件模型。采用授权事件模型进行事件处理一般包含三步骤:第一、确
28、定事件源Event Source和事件Event。第二、实现可以监听和处理事件的监听器Event Listener,编写事件的处理代码。第三、将监听器对象注册给事件源,这样关联之后才能使得事件发生后能执行相应的处理代码。Java图形用户界面事件处理的过程例程:典型的按钮点击事件使用文本框收集用户输入的学生信息,点击“确定”按钮后将学生信息回显到界面右侧空白区域,点击“重置”按钮将同时清空文本框填入的信息和右侧的回显信息。运行效果如图所示。4.2容器与布局任务3 图形用户界面的四则运算编程实现图形用户界面的四则运算程序,加法、乘法运算的运行效果分别如图所示。知识点:JPanel、布局管理器 一、
29、JPanelJPanel,Swing中的中间层容器面板,继承自javax.swing.JComponent,主要用于放置Swing轻量级组件,JPanel的对象也可以作为顶层容器的内容面板来使用。将JPanel与布局策略结合使用可以更有效地进行界面设计和管理。二、布局管理器1、FlowLayoutFlowLayout 是JPanel的缺省布局管理器,其布局策略是:组件按从上到下、从左到右的顺序进行放置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边,依此类推。2、BorderLayoutBorde
30、rLayout边界布局是一种比较简单的布局策略,它将容器分为NORTH、SOUTH、WEST、EAST、CENTER五个区域,每个区域容纳一个组件,这五个区域被定义为BorderLayout类的5个静态常量。3、GridLayoutGridLayout网格布局是像棋盘一样将容器划分成若干行列的网格区域,每个网格放置一个组件。在容器上添加组件时,它们会按从左到右、从上到下的顺序在网格中排列。4、BoxLayoutBoxLayout箱式布局是在Swing中新增加的一种布局管理器,它允许多个组件全部垂直摆放或全部水平摆放。BoxLayout布局管理器按照自上而下(y轴)或者从左到右(x轴)的顺序布局
31、依次加入组件。5、null布局若想精确地指定各个组件的位置和大小,我们可以使用容器的setLayout()方法,将参数设为null,表示取消容器的布局管理器设置,即null布局。若采用了null布局,就需要我们为各个组件设置位置和大小,应配合组件的setBounds()方法,或setLocation()方法、setSize()方法使用。4.3GUI基本元素任务4 文本复制编程实现一个文本复制程序,用户可以在左侧文本区中键入内容,选中文本后,点击copy按钮可将选中的文本复制到右边的文本区中,运行效果如图所示。任务5 字体选择器编程实现一个字体选择器,用户可以选择字体、字号、样式和颜色,用户键入
32、文本内容时,文本区回显用户键入的内容,并采用用户选择的字体、字号、样式和颜色。运行效果如图所示。知识点:选择型组件一、单选按钮JRadioButtonJRadioButton单选按钮必须配置成组才能实现多选一,否则仍然能够多选。性别选择就应使用JRadioButton单选按钮组实现。二、复选框JCheckBoxJCheckBox,复选框,实现一组选项中的多选功能例程:模拟考试系统的答题界面三、组合框JComboBoxSwing通过JComboBox类支持组合框(一个文本框和下拉列表的组合),组合框通常显示一个可选条目,可允许用户在一个下拉列表中选择多个不同条目4.4菜单与工具栏任务6 简单记事
33、本界面编程模拟一个简单记事本界面,包含文件的新建、打开操作命令和文本的剪切、复制、粘贴命令,以及退出程序的操作命令,并实现编辑功能(剪切、复制、粘贴)和退出功能。效果如图所示。知识点:菜单、工具栏一、菜单菜单和工具栏几乎是所有图形用户界面程序中必备的组件,Swing包中有一系列专门用来创建菜单组件的类,如图所示。1、JMenuBar菜单栏JMenuBar是放置菜单的容器。可以通过JFrame类的setMenuBar()方法把JMenuBar对象加入一个框架中。2、JMenu菜单JMenu是菜单栏上放置的菜单。每一个菜单由一些菜单项组成。可以通过JMenuBar类的add()方法,把JMenu对
34、象放置在JMenuBar对象上(即设置菜单栏上的主菜单)。3、JMenuItem菜单项菜单项代表具体的菜单操作命令,可以通过JMenu类的add()方法,把JMenuItem菜单项加到JMenu菜单中。JMenuItem与JButton及其相似,点击JMenuItem同样产生ActionEvent事件。4、JPopupMenu弹出菜单JPopupMenu可实现弹出菜单,弹出菜单是一个可弹出并显示一系列选项的小窗口。JPopupMenu 用于用户在菜单栏上选择项时显示的菜单。它还用于当用户选择菜单项并激活它时显示的“右拉式 (pull-right)”菜单。5、JSeparator分隔符JSepa
35、rator 常用作菜单项之间的分隔符,以便将菜单项分成几个逻辑组。可以使用 JMenu 或JPopupMenu 的 addSeparator() 方法来创建和添加一个分隔符,而不是直接使用 JSeparator。JSeparator 还可能用于 GUI 中任何一个需要可视化分隔符的地方。 6、创建菜单系统案例例程:模拟一个学生管理系统的菜单系统二、工具栏Swing中JToolBar类提供了工具栏的属性和方法,用来放置各种常用功能命令的按钮。对于大多数的外观,用户可以将工具栏拖到单独的窗口中(除非 floatable 属性被设置为 false)。4.5对话框任务7 确认退出对话框在任务6的基础上
36、,创建确认退出的对话框,当用户选择退出菜单或点击退出按钮时,弹出该对话框请用户确认退出操作。运行效果如图所示。知识点:JDialog、JOptionPane、JFileChooser一、JDialogJDialog,Swing中的对话框,依赖于上层组件(窗口或对话框),一般是一个临时的窗口,主要用于显示提示信息或接受用户输入。JDialog必须要依赖于某个窗口或组件,当它所依赖的窗口或组件消失,对话框也将消失,当它所依赖的窗口或组件可见时,对话框又会自动恢复。二、JOptionPaneJOptionPane类提供了一些静态方法用于显示各种对话框,这些对话框都是模式的,主要包含四种类型:消息对话
37、框、输入对话框、确认对话框和选项对话框。JOptionPane类创建各种标准对话框的静态方法,见教材表4-6三、JFileChooserJFileChooser,文件选择器,用于显示打开或保存文件的对话框。JFileChoose本身只是一个针对文件操作的对话框,并没有文件读取或文件存盘的功能,要实现这样的功能,必须要结合输入输出流的使用。4.6表格任务8 使用表格编程实现一个简单学生成绩管理程序,可以录入和显示学生姓名、班级和成绩信息。运行效果如图所示。知识点:JTable表格是在设计图形用户界面时非常重要的一种组件,特别是当我们需要将较多的统计数据非常清晰而有条理地呈现在用户面前时,表格的运
38、用可以达到很好的效果Swing实现表格的组件是JTable实训任务实训 4-1 编写简易计算器界面,并实现其计算功能。实训 4-2 自行设计一个输入学生基本信息的窗口,要包含能输入学生基本信息的各种组件,具有选择性质的要使用相应的选择型组件,还要求包含两个按钮(确定和重置)和一个不可编辑的文本区。功能要求:点击确定后能在文本区中显示出学生输入的信息,点击重置能撤销之前的输入。实训任务实训 4-3 参考下图所示界面,实现一个猜数字游戏程序。实训任务实训 4-4 实现如图所示的生肖显示器,当选择出生年份时,可显示对应的生肖图片。Java高级程序设计第5章 IO输入输出流第5章IO输入输出流5.1I
39、O流的概念5.2文件读写5.3使用过滤流5.4使用RandomAccessFile本章目标 IO流的概念、分类 使用文件流读写文件 使用过滤流本章任务任务1 使用预定义流任务2 文件类型过滤器任务3 文件复制任务4 记事本打开、另存为功能任务5 学生信息存至磁盘文件5.1IO流的概念任务1 使用预定义流编程实现:接收用户输入一段字符,并在控制台回显出来。运行效果如图所示。知识点:流的概念和分类、预定义流一、流的概念和分类Java程序通过流来执行输入输出处理流的模型如图所示:以程序为基准点,根据流中的数据传输的方向,流可以分为:输入流:由外部源向程序提供数据输出流:由程序向外部目的地提供数据根据
40、“导管”里流动的数据的类型,流可以分为:字节流:以字节为传输单位字符流:以字符为传输单位根据流的建立方式和工作原理,流可以分为:节点流:直接建立在源端、目的端上过滤流:必须以某个节点流作为流的来源,可以在读/写数据的同时对数据进行处理字节流的类层次结构如图所示字符流的类层次结构如图所示二、预定义流java.lang.System类中包含三个预定义静态常量,分别是in、out和err,可以通过System类直接调用它们,它们就是Java语言提供的预定义流。5.2文件读写任务2 文件类型过滤器编程实现一个文件类型过滤器,列出指定目录下的所有.java源文件,假定目录为e:java。运行效果如图所示
41、。知识点:File类文件(file)是存储在辅助存储器中的一组相关信息的集合,它可以存放程序、文档、图片、声音或视频信息等。目录(directory)是一种特殊的文件,用以存放普通文件或其它的目录。路径(path)是从盘符经过各级子目录到文件的目录序列。java.io包中定义了一个File类来专门处理文件,并获取文件的有关信息。 Java语言中通过File类来建立与磁盘文件的联系,File类主要用来获取文件或目录的信息,File类的对象本身不提供对文件的处理功能。任务3 文件复制编程实现一个文件复制功能,将一个java源文件复制到一个指定的txt文件,假定就复制本程序的源文件FileCopy.
42、java,复制到e:/java目录中。运行效果如图所示。知识点:文件字节IO流FileInputStream是InputStream类的子类,它的常用构造方法如下:FileInputStream(String name):使用指定的文件名name创建一个FileInputStream的对象,如果文件不存在会产生FileNotFoundException。FileInputStream(File file):使用指定的文件对象来创建一个FileInputStream的对象,如果文件不存在会产生FileNotFoundException。FileOutputStream是OutputSream类的
43、子类,它的常用构造方法如下:FileOutputStream(String name):使用指定的文件名创建一个FileOutputStream的对象。FileOutputStream(File file):使用指定的文件对象来创建一个FileOutputStream的对象。任务4 记事本打开、另存为功能在第4章任务6实现的简单记事本程序基础上,添加“另存为”菜单项,并实现“打开”、“另存为”文件功能。运行效果如图所示。知识点:文件字符IO流FileReader类是Reader类的子类,它可以按字符对文件进行读取。它的常用构造方法如下:FileReader(String name):使用指定的
44、文件名name创建一个FileReader的对象,如果文件不存在会产生FileNotFoundException。FileReader(File file):使用指定的文件对象来创建一个FileReader的对象,如果文件不存在会产生FileNotFoundException。FileWriter类是Writer类的子类,它可以按字符对文件进行写入。它的常用构造方法如下:FileWriter(String name) :使用指定的文件名name创建一个FileWriter的对象。FileWriter(File file): 使用指定的文件对象file创建一个FileWriter的对象。5.3使
45、用过滤流任务5 学生信息存至磁盘文件编程实现:控制台接收输入学生的基本信息,再将这些信息存至磁盘文件。运行效果如图所示。知识点:节点流和过滤流、常用过滤流一、节点流和过滤流根据流的建立方式和工作原理不同,可以将流分为:节点流(Node Streams):直接建立在源端、目的端上。过滤流(Filter Streams):过滤流必须以某一个节点流作为流的来源,可以在读/写数据的同时对数据进行处理。过滤流建立在节点之上体现在过滤流的构造方法中,比如:FileInputStream in = new FileInputStream(file);DataInputStream datain = new
46、DataInputStream (in);实现了基于文件输入流in的过滤流datain,它将可以实现分数据类型读文件file。二、常用过滤流1、DataInputStream和DataOutputStreamDataInputStream和DataOutputStream类提供了对Java基本数据类型和String的操作。在DataInputStream和DataOutputStream两个类中的方法都很简单,基本结构为readXxx()和writeXxx()其中Xxx代表基本数据类型或者String。2、ObjectInputStream和ObjectOutputStream、对象序列化Ob
47、jectInputStream和ObjectOutputStream这一对过滤流可以实现对可序列化的对象的读写操作读写方法分别是:Object readObject() throws IOException, ClassNotFoundException:从 ObjectInputStream 读取对象。void writeObject(Object obj) throws IOException:将指定的对象写入 ObjectOutputStream。Java的序列化机制可以让实现了Serializable接口的对象或者其父类实现了Serializable接口的对象,通过序列化的方式将对象转
48、化成为字节序列,并且可以通过反序列化的方式将这些字节序列还原成为对象。序列化机制可以让程序员将对象永久保存到数据库或者文件中,也可以让程序员通过网络传输这些对象。5.4使用RandomAccessFile对文件进行随机存取,读写文件的位置能够在文件中随意的移动,可以使用RandomAccessFile类,使用seek()方法指定文件存取的位置来进行随机存取的操作。RandomAccessFile(String name, String mode):创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称name,mode是打开方式,例如“r”表示只读,“rw”表示可读写。 实训任务
49、实训 5-1 编写一个标准化考试小软件界面,从外部文本中读入题目,并要求每做完一个题目都把该题目的正确答案显示给用户。实训 5-2 编写一个用户基本信息管理的小软件界面,允许用户录入信息并将其存储在外部文件之中,并可以将其重新显示出来。实训 5-3 模拟记事本功能,实现文件的新建、打开、保存和另存为功能。Java高级程序设计第6章 JDBC数据库编程第6章 JDBC数据库编程6.1JDBC数据库编程概述6.2JDBC基本操作:CRUD6.3JDBC进阶本章目标 JDBC原理 Java连接数据库 JDBC编程基本操作:CRUD本章任务任务1 基于数据库的学生信息检索程序任务2 查询联系人任务3
50、添、删、改联系人任务4 运用事务6.1JDBC数据库编程概述任务1 基于数据库的学生信息检索程序学生信息存于MySQL数据库,编程实现检索学生信息的桌面程序,界面友好方便用户操作,提供检索所有学生和按学生姓名检索两种功能。运行效果如图所示。知识点:JDBC概述、MySQL、连接MySQL数据库一、JDBC概述Java语言的开发者编写了一系列的类使得Java语言可以采用相同的API对不同的数据库进行操作,这样就可以提高Java程序的多数据库的可移植性。这些类位于java.sql包和javax.sql包下,它们共同组成了Java DataBase Connectivity ,即JDBC。JDBC由
51、两部分构成:一是基于Java语言的通用JDBC API,这部分的类和接口位于java.sql包和javax.sql包二是由数据库管理系统厂家或者第三方针对特定数据库提供的数据库专用JDBC驱动程序(Driver),通常由数据库厂家或第三方以jar包的形式提供。这些驱动程序提供专门的接口将通用的程序调用映射成为底层数据库能够理解的命令JDBC具备与数据库建立连接和与数据库进行通信的能力,它的基本功能主要包括:(1)连接数据库;(2)操作数据库;(3)处理结果集。二、MySQL1、下载MySQL数据库2、安装和配置MySQL3、下载Java连接MySQL数据库的JDBC驱动程序三、连接MySQL数
52、据库获取数据库连接时包含两个步骤:(1)注册数据库驱动程序,或称作加载驱动程序。(2)获取数据库连接对象。使用java.sql. DriverManager类的getConnection()方法可以返回数据库连接对象。6.2JDBC基本操作:CRUDJava程序操作数据库主要涉及到三个接口及其方法:java.sql.Connection接口,数据库连接对象就是该类型的对象;java.sql.Statement接口及其子接口PreparedStatement,该类型的对象可以将SQL语句发送至数据库并令其执行;java.sql.ResultSet接口,数据库做SELECT查询操作的结果是该类型的
53、对象。进行数据库编程主要遵循如下几个步骤:(1)获取数据库连接对象;(2)基于连接生成Statement语句对象;(3)发送SQL语句至数据库执行;(4)处理SQL语句的执行结果。任务2 查询联系人联系人信息存于数据库,编程实现查询联系人信息并于控制台显示出来。运行效果如图所示。知识点:查询操作JDBC对数据库进行查询操作时,需要获得java.sql.Statement的一个实现对象,Statement的对象可以将SQL语句发送至数据库并令其执行。Statement对象由连接对象可以通过Connection对象调用createStatement()方法获得。在获得了Statement类型的对象
54、后,通过调用其ResultSet executeQuery(String sql)方法可以进行数据库查询操作,JDBC会将数据库查询的结果封装成java.sql.ResultSet接口类型的对象返回。任务3 添、删、改联系人基于任务2的数据库和联系人表contact,进行联系人的添、删、改操作,并于控制台显示每种更新操作后的联系人信息。运行效果如图所示。知识点:添删改操作、PreparedStatement、可滚动结果集一、添删改操作对数据库中的表进行添加、删除、修改操作时同样需要通过Statement对象进行,与查询操作不同的地方在于,添删改操作不会返回一个查询结果集ResultSet,而是
55、返回一个整数表示当前操作所影响的记录行数。添删改操作不调用executeQuery()方法,而是调用executeUpdate()方法。二、PreparedStatementPreparedStatement是Statement的子接口。PreparedStatement允许建立一个带有参数的SQL语句,若多次操作执行的是相同结构而只是参数不同的语句,则每次为参数赋值就可以反复使用这条语句,这种特性可以提高性能,同时可以简化开发。使用PreparedStatement的一般步骤:(1)准备SQL语句串,留出IN参数,用?占位(2)创建PreparedStatement语句对象(3)为每个IN参
56、数设值,要按照 ? 出现的位置依序赋值(4)发送SQL语句到数据库执行 三、可滚动结果集1、可滚动结果集ResultSet结果集默认只能按顺序遍历结果集中的所有行,并且结果集中的数据更改不会影响到数据库中的记录可滚动的结果集其游标可以灵活定位至结果集的任何位置,操作起来非常方便2、结果集元数据ResultSetMetaData专门用于描述数据库或其组成部分的数据称为元数据,元数据是描述数据的数据,而不是那些存在数据库中的实际数据。结果集元数据ResultSetMetaData是用于描述结果集ResultSet对象相关信息的元数据,ResultSet对象是二维表结构的,ResultSetMeta
57、Data主要用来获取ResultSet对象中列的名称、类型以及数目等等信息。6.3JDBC进阶任务4 运用事务编程实现:在任务2的联系人表中先添加联系人Tom,再修改其部分属性值,添加、修改操作要么都执行,要么都不执行。运行效果如图所示。知识点:事务 事务是SQL提供的一种机制,用于强制数据库的完整性和维护数据的一致性。JDBC提供对事务的支持,默认情况下事务是自动提交的,如果不想让这些SQL命令自动提交,可以在获得连接后使用下面的语句关闭自动提交:con.setAutoCommit(false);实训任务实训 6-1 结合本章所学的知识和第4章GUI编程知识,定义一个完整的book_quer
58、y数据库查询应用程序。提供查询条件,如按书名、按作者、按出版社进行查询等,查询条件列在JComboBox中供用户选择,并提供文本框令用户可以输入查询关键字,最终根据用户选择的查询条件和输入的查询关键字进行检索并展现结果。数据库及图书信息表自行设计和实现,至少能实现如下几种查询:1、选择books表的所有图书信息;2、按书名查找图书;3、按出版社查找图书。实训任务实训 6-2 修改上面的程序,除了查询以外,用户应当能够编辑现有的数据。要求能实现图书的添加、修改、删除等操作。Java高级程序设计第7章 多线程第7章 多线程7.1线程概述7.2线程的生命周期7.3线程的优先级7.4线程同步7.5线程
59、通信本章目标 线程的概念 线程的生命周期、创建和启动 线程同步本章任务任务1 创建并启动多个线程任务2 模拟多窗口售票7.1线程概述任务1 创建并启动多个线程编程实现:模拟多种动物同时发声,叫声此起彼伏,运行效果如图所示。知识点:线程概念、线程的创建和启动一、线程概念线程与进程相似,是一段完成某个特定功能的代码,是程序中单个顺序的流控制;但与进程不同的是,同类的多个线程是共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。一个进程在其执行过程中,可以产生多个线程,形成多条执行线索每条线索,即每个线程有它自身的产生、存在和消亡的过程线程可
60、以利用这些共享单元来实现数据交换,实时通信与必要的同步操作二、线程的创建和启动1、继承Thread类创建线程类为创建一个自己的线程,最简单的方法就是继承java.lang.Thread类,实例化一个Thread类包含了创建和运行线程所需的一切东西Thread类的常用方法,见教材表7-1通过继承Thread类的方式创建自己的线程子类时,可以通过重写父类的run()方法来使其执行我们指定的操作。启动线程的方式是:创建一个已经定义好的Thread的子类的对象,然后调用start()方法开始执行线程,而不是直接调用run()方法,run()方法由start()方法去自动调用。2、使用Runnable接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会议决议事项执行跟进催办函8篇
- 游动物园记周记格式范文(6篇)
- 合作伙伴维持承诺书范文6篇
- 我司产品开发承诺函3篇
- 财务管理变更通告函(5篇范文)
- 事业前程承诺保障书(9篇)
- 2026年农村精神文明建设知识竞赛试题
- 2026年腾讯数据分析师面试仿真题与高分答案解析
- 遵守公司纪律行为规范承诺书(3篇)
- 2026年社区特殊群体残疾人农民工文化服务考核
- 湖北省武汉市2026高三下学期3月调研考试化学试题 含答案
- (新教材)2026年部编人教版三年级下册语文 语文园地三 课件
- 护理团队建设与沟通技巧
- 2026年初二历史下学期期中考试卷及答案(共四套)
- 芯片销售培训内容
- 耳石症手法复位治疗课件
- 南京2025年东南大学专职辅导员招聘18人笔试历年参考题库附带答案详解
- 2026年深圳中考历史得分技巧精讲试卷(附答案可下载)
- 液化气送气工培训课件
- 2025西安交通大学第一附属医院科研助理招聘笔试备考试题及答案解析
- 2025年突发事件舆论危机处置工作应急预案桌面演练方案
评论
0/150
提交评论