Java语言程序设计-第三版 清华第8章 PPT课件

合集下载

清华面向对象程序设计:第08章

清华面向对象程序设计:第08章
第8章 工具类库与数据结构接口
8.1 Java语言的工具类库概述
在Java语言提供的工具类库中包含了大 量的标准类,有效地利用这些标准类可 以使程序设计开发人员从繁杂的基础开 发中解脱出来,这是面向对象程序设计 开发方法倡导的软件重用的具体体现, 是缩短软件开发周期的主要途径,是提 高软件产品质量的关键所在。
在这个程序中,利用默认的构造方法创 建一个Random对象,因此在每次运行这 个程序时,随机数发生器都将会以当前
的系统时间作为“种子”值,产生随机
数序列,由于每次运行程序时的系统时
间不会相同,所以产生的随机数序列也
不会相同。
8.2.2 日期类(Date)
用于对日期进行比较的三个成员方法: 在Date类中,提供了三个用于对日期进行比较的public 成员方法。在应用程序中,可以利用它们很容易地判 断两个日期: after(Date earlier) 如果当前对象记录的日期晚于参数 带入的日期,则返回true,否则返回false。 before(Date later) 如果当前对象记录的日期早于参数 带入的日期,则返回true,否则返回false。 equals(Object aDate) 如果当前对象记录的日期与参数 带入的日期一样,则返回true,否则返回false。
一、Vector类
Vector是定义在java.util包中的一个public类, 通常被称为向量类。在这个类中,定义了三个 protected成员变量,它们分别为: protected Object elementData[]; //存放向量元 素的数组 protected int elementCount; //向量允许存放 的最多元素个数 protected int capacityIncrement; //每次扩展 向量单元的个数

Java语言程序设计_基础篇_中文ppt_第八章

Java语言程序设计_基础篇_中文ppt_第八章

描述对象和类,使用类来建模对象(第8.2节)。 使用UML图形符号来描述对象和类(第8.2节)。 演示如何定义类以及如何创建对象(第8.3节)。 使用构造方法创建对象(第8.4节)。 通过对象引用变量访问对象(第8.5节)。 使用引用类型定义引用变量(第8.5.1节)。 使用对象成员访问操作符(.)来访问对象的数据和方法(第8.5.2节)。 定义引用类型的数据域并给对象的数据域赋默认值(第8.5.3节)。 区分对象引用变量与基本类型变量的不同(第8.5.4节)。 在Java库中使用 Date类、Random类和JFrame类 (第8.6节)。 区分实例变量与静态变量,实例方法与静态方法的不同(§8.7节)。 定义有恰当的get方法和set方法的私有数据域(第8.8节)。 封装数据域以便于类的维护(第8.9节)。 开发带对象参数的方法并区分基本类型参数和对象类型参数的不同(第8.10节)。 在数组中存储和处理对象(第8.11节)。
17
动画
跟踪代码
声明 myCircle
Circle myCircle = new Circle(5.0);
SCircle yourCircle = new Circle(); yourCircle.radius = 100;
myCircle
无值
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807
15
一步完成对象的声明/创建
ClassName objectRefVar = new ClassName();
创建对象
赋值给对象引用

JAVA语言程序设计第八章

JAVA语言程序设计第八章

2.实现监听器中的接口,如: 实现监听器中的接口, 实现监听器中的接口
public void actionPerformed(ActionEvent e) {
...//响应某个动作的代码... ...//响应某个动作的代码... 响应某个动作的代码
}
3.在一个或多个组件上将监听器类的实例注册为监听器, 3.在一个或多个组件上将监听器类的实例注册为监听器, 在一个或多个组件上将监听器类的实例注册为监听器 如:someComponent.addActionListener(instanceOfMyClass);
8
Flow Layout Managerexample GUI
例: import java.awt.* ; public class ExGui { Press Me Don’t Press Me private Frame f ; private Button b1 ; private Button b2 ; public static void main( String args[ ] ){ ExGui guiwindow = new ExGui( ); guiWindow.go( ) ; } public void go( ){ f = new Frame(“GUI example”) ; f.setLayout( new Flow Layout( )) ; b1 = new Button(“Press Me”); b2 = new Button(“Don’t Press Me “); f.add( b1) ; f.add(b2); f.pack( ); f.setVisible(true) ; } 9 }
...
Button Dialog Container window Frame ... ScrollPane

清华大学Java 语言程序设计--Java 语言基础知识ppt课件

清华大学Java 语言程序设计--Java 语言基础知识ppt课件

Java
安装JDK后产生如下目录:
\bin目录:Java开发工具,包括Java
程 编译器、解释器等
序 概 述
\demo目录:一些实例程序 \lib目录:Java开发类库
\jre目录: Java运行环境,包括
Java虚拟机、运行类库等

22
1.2.1 Java开发环境(续)
Java

言 与
程序设计语言发展的历程
面 向
– 机器语言
对 象
– 汇编语言
的 程
– 高级语言


– 面向对象的语言

5
Java
1.1.1 面向对象的程序设计思想(续)

言 与
面向对象的思想
面 向
– 将客观事物看作具有状态和行为的对象,
对 象
通过抽象找出同一类对象的共同状态和

行为,构成类。





– Java中没有操作符重载;

– Java中没有全局变量,可以在类中定义公用、

静态的数据成员实现相同功能;
…...
11
Java
1.1.3 Java类库

言 组成Java程序的最小单位是类,类封
与 装了数据与处理数据的方法。
面 向
对于大多数常用的功能,有大量已经
对 编译好、经过测试的类,这些类的集
– 输入:appletviewer Applet1.html
程 序 概 述
32
1.3 基本数据类型与表达式
变量与常量 基本数据类型 表达式与运算符 类型转换
39

清华大学Java 语言程序设计--Java 语言基础知识ppt课件

清华大学Java 语言程序设计--Java 语言基础知识ppt课件
Java VM(虚拟 机)
– Java 程序由Java 虚拟机程序执行 (或解释执行)。
17
Java
1.2.1 Java开发环境(续)
Java2 SDK(Software Development Kit)
– Standard Edition (J2SE)

– Enterprise Edition (J2EE)
下载地址

程 序 概 述
下载文件
– j2sdk-1_4_0-win.exe – j2sdk-1_4_0-doc.zip
安装
– 直接运行“j2sdk-1_4_0-win.exe” 。
9
Java
1.1.2 Java语言的特点(续)

言 Java 语言的优点
与 面
– 易于学习

– 代码效率高

– 代码质量高
象 的
– 开发程序快

– 体系结构中立,纯Java程序不依赖于平台

– 一处编写,各处运行
设 计
– 软件易于发布
10
1.1.2 Java语言的特点(续)
Java

言 Java与C++的区别

– Java中没有操作符重载;

– Java中没有全局变量,可以在类中定义公用、

静态的数据成员实现相同功能;
…...
11
Java
1.1.3 Java类库

言 组成Java程序的最小单位是类,类封
与 装了数据与处理数据的方法。
面 向
对于大多数常用的功能,有大量已经
对 编译好、经过测试的类,这些类的集

p08教师用书配套课件

p08教师用书配套课件
INSERT INTO studentbook ( no, name, birth ) VALUES (‘041201’, ‘张学海’, ‘87-2-3’)
⒉ 使用SELECT插入查询所得的记录
INSERT INTO studentbook(No,Name,Birth) SELECT No,Name,Birth FROM studentbookA WHERE No=’041202’
2020年1月5日星期日
5时49分11秒
Java 程序设计
18
8.4.1 装入驱动器
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
8.4.2 连接到数据库
用DriverManger类中的getConnection( )方法 建立与数据库的连接。getConnection( )方法中有 三个参数:jdbc url、用户名、密码。其中jdbc url又包含用冒号分隔的如下三个部分:
2020年1月5日星期日
5时49分11秒
Java 程序设计
4
8.2.1 SELECT语句 SELECT(选择或检索)语句用于从数据库中选
择满足条件的记录 ⒈ 一个简单的SELECT语句
SELECT Name,Sex,Birth
Form studentbook
⒉ 添加WHERE子句 WHERE子句指明返回数据必须满足的条件
2020年1月5日星期日
5时49分11秒
Java 程序设计
14
Microsoft公司提供了一个名叫ODBC(开 放式数据库互连)的技术,使Windows应用 程序能访问不同的数据库。ODBC中包含了一 组与数据库相关的ODBC驱动器。按照前面的 叙述,好像不需要JDBC,Java应用程序使用 ODBC就能够与不同的数据库进行通信。但是, 因为ODBC API是用C语言描述的,使用了指 针及其他一些Java不支持的构造,所以, Java程序不能直接与ODBC驱动器通信。作 为JDBC的一部分,SUN提供了由JDBC访问 ODBC数据源的驱动器——JDBC-ODBC桥接

第8章图(5)-数据结构教程(Java语言描述)-李春葆-清华大学出版社

第8章图(5)-数据结构教程(Java语言描述)-李春葆-清华大学出版社
4/29
拓扑排序的结果有两种: 一种是图中全部顶点都被输出,即得到包含全部顶点的拓扑序列, 称为成功的拓扑排序。 另一种就是图中顶点未被全部输出,即只能得到部分顶点的拓扑 序列,称为失败的拓扑排序。 说明有向图中存在回路。
5/29
C1
C3
C4
C6
C7
C2
C5
产生一个拓扑序列:
C1
C3
C2
C7
C4
活动a的最早开始时间e(a)指该活动起点x事件的最早开始时间,即: e(a)=ee(x)
活动a的最迟开始时间l(a)指终点y事件的最迟开始时间与该活动所需时 间之差,即:
l(a)=le(y)-c
14/29
(3)求关键活动
对于每个活动a,求出d(a)=l(a)-e(a),若d(a)为0,则称活动a为关键 活动。 对关键活动来说,不存在富余时间。
//有边<i,j>,顶点j的入度增1
//定义一个栈 //所有入度为0的顶点进栈
8/29
while (!st.empty()) { int i=st.pop();
System.out.print(i+" ");
p=G.adjlist[i].firstarc;
while (p!=null)
{ int j=p.adjvex;
7/29
public static void TopSort(AdjGraphClass G) { int[] ind=new int[MAXV];
Arrays.fill(ind,0); ArcNode p; for (int i=0;i<G.n;i++) { p=G.adjlist[i].firstarc;

面向对象程序设计—Java(第三版)8章图文 (4)

面向对象程序设计—Java(第三版)8章图文 (4)

boolean isActionKey( )
返回此事件中的键是否为“动作”键
String paramString( )
返回标识此事件的参数字符串
void setKeyChar(char keyChar)
设置 keyCode 值,以表示某个逻辑字符
void setKeyCode(int keyCode)
} }
该程序的运行结果如图11.1所示。
第11章 高级组件GUI设计
图11.1 程序C11_1的运行结果
第11章 高级组件GUI设计
11.3 MouseEvent事件及其响应
在图形用户界面中,鼠标(Mouse)主要用来进行选择或 切换等。当用户在GUI上用鼠标进行交互操作时,会产生 MouseEvent事件。表10.4、表10.5和表10.6列出了 MouseEvent事件类与事件源和事件监听器之间的关系。本 节通过在用户界面上设计一个能激发和处理鼠标事件的例子 来说明MouseEvent事件及响应原理。
在java.awt.Event. MouseEvent类中得到事件源的常用成 员方法如表11.5所示。
第11章 高级组件GUI设计
表11.4 MouseEvent事件的监听器和监听器的成员方法
事件监听器 MouseListener MouseMotionListener
成员方法 moveClicked(MouseEvent e) moveEntered(MouseEvent e) moveExited(MouseEvent e) movePressed(MouseEvent e) moveReleased(MouseEvent e) moveDragged(MouseEvent e) moveMoved(MouseEvent e)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10

class Lefthand extends Thread public class Example9_1 { public void run() { public static void main(String { for(int i=1;i<=3;i++) 我是主线程 args[]) { 我是主线程 { Lefthand left; System.out.println("我是左手 我是主线程 Righthand right; 线程"); 我是左手线程 left=new Lefthand() ; //创建 } 我是左手线程 线程 } 我是左手线程 right=new Righthand(); } 我是右手线程 left.start(); class Righthand extends Thread 我是右手线程 right.start(); { public void run() 我是右手线程 for(int i=1;i<=3;i++) { for(int i=1;i<=3;i++) { System.out.println("我是 { System.out.println("我是右 主线程"); 手线程"); } } } } } }
5
Life Cycle of Thread
6
线程的几种基本状态(续)


诞生状态
– 线程刚刚被创建
就绪状态
– 线程的 start 方法已被执行 – 线程已准备好运行

运行状态
– 处理机分配给了线程,线程正在运行
阻塞状态(Blocked)
– 在线程发出输入/输出请求且必须等待其返回 – 遇到用synchronized标记的方法而未获得其监视器暂时 不能进入执行时
4
线程的状态与生命周期


新建: 当一个Thread类或其子类的对象被声明并 创建时,新生的线程对象处于新建状态。此时它 已经有了相应的内存空间和其他资源。 就绪状态:线程等待 CPU 运行状态:start()方法开始执行 中断(阻塞)状态:sleep(), wait(), I/O 完成 or 发布 I/O 请求 – sleep(): 使当前线程进入等待状态,参数设定其 等待时间 – wait(): 使当前线程进入等待状态,调用nofify(), or notifyAll(), 使其重新进入线程等待队列 死亡: – run() 方法完成 – stop() 方法被调用
程间的通信很不方便,编程模型比较复杂
进程通信方式 共享存储器系统、消息传到机制、管道通信
3
线程的概念(续)

线程
– 一个程序中多段代码同时并发执行,称为多线程 – 通过多线程,一个进程表面上看同时可以执行一 个以上的任务——并发 – 创建线程比创建进程开销要小得多,线程之间的 协作和数据交换也比较容易(进程独站资源) – 线程间共享资源(内存、代码、数据)有利于并 行处理
Thread类(续)

在新线程中完成计算某个整数的阶乘
public class Ex8_1 { public static void main( String [] args ) { System.out.println("main thread starts"); FactorialThread thread=new FactorialThread(10); thread.start(); System.out.println("main thread ends " ); } } class FactorialThread extends Thread { private int num; public FactorialThread( int num ) { this.num=num; }9_11) 进程
– 一个独立程序的每一次运行称为一个进程,例如

用字处理软件编辑文稿时,同时打开mp3播放程序听音乐,
这两个独立的程序在同时运行,称为两个进程
– 设置一个进程要占用相当一部分处理器时间和内存资源
– 大多数操作系统不允许进程访问其他进程的内存空间,进

休眠状态(Sleeping)
– 执行sleep方法而进入休眠
死亡状态
– 线程已完成或退出
7
主线程:Java应用程序总是从主类的main方法开 始执行。当JVM加载代码,发现main方法之后, 启动的线程称作“主线程”,该线程负责执行 main方法。 在main方法的执行中再创建的线程,就称为程序 中的其它线程。 如果main方法中没有创建其他的线程,那么当 main方法执行完最后一个语句,JVM就会结束 Java应用程序。 如果main方法中又创建了其他线程,那么JVM就 要在主线程和其他线程之间轮流切换,main方法 即使执行完最后的语句,JVM也不会结束程序, JVM一直要等到程序中的所有线程都结束之后,才 结束Java应用程序。
– 从Thread类派生一个子类,并创建这个子类的对象,就 可以产生一个新的线程。这个子类应该重写Thread类的 run()方法,在run方法中写入需要在新线程中执行的 语句段。这个子类的对象需要调用start方法来启动,新 线程将自动进入run方法。原线程将同时继续往下执行
– 它位于ng包中,因而程序开头不用import任何包就 可直接使用 例子:Example9_1.java
第九章 线程
目录

Java中的线程 线程的生命周期 Thread的子类创建线程 使用Runable接口 线程的常用方法 线程的优先级 线程同步 在同步方法中使用wait()、notify 和notifyAll()方法 挂起、恢复和终止线程 本章小结
2
线程的概念

8

Java中创建线程的两种方法
– Thread 类的子类创建线程对象,子类重 写Thread类中的run()方法 – 使用Thread类直接创建线程对象,但需 要使用Runable接口
9
Thread类

Thread类
– 在Java程序中创建多线程的方法之一是继承Thread类 – 封装了Java程序中一个线程对象需要拥有的属性和方法
相关文档
最新文档