Java第6章PPT课件
合集下载
Java开发基础PPT课件
运算相关注意事项
使用JDK库实现常用算法及函数 数值类型的自动转换规则 强制类型转换及截位 枚举类型的使用
字符串
字符串
代码点与代码单元 字符子串与拼接 相等的比较
注意事项
编码转换方法 子串下标计算 拼接的性能 String 方法 intern() 的应用
注释
注释
单行注释 多行注释 文档注释
–32,768 to 32,767
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
1 byte
–128 to 127
Type float double
Storage Requirement 4 bytes
8 bytes
Range
approximately ±3.40282347E+38F (6–7 significant decimal digits)
大纲
☞ 对象构造顺序
方法参数传递:按值调用 类设计基本原则
对象构造顺序
对象构造顺序
类装载时,按类声明中出现的次序执行静态初始化块或静态初始化 语句。
对象构造时: 所有数据域初始化为默认值 按类声明中出现的次序执行初始化块或初始化语句。 如果构造器第一行调用了第二个构造器,则跳转到第二个构造器 中执行,直到返回。 执行这个构造器的主体部分。
Java开发基础
目录
☞ 第1章 Java体系结构
第2章 基本程序结构设计 第3章 对象与类 第4章 继承 第5章 接口与内部类 第6章 事件处理 第7章 异常与调试 第8章 流与文件
Java体系结构
Java体系结构包括如下四大类技术:
Java程序设计语言 Java class文件格式 Java API Java 虚拟机
使用JDK库实现常用算法及函数 数值类型的自动转换规则 强制类型转换及截位 枚举类型的使用
字符串
字符串
代码点与代码单元 字符子串与拼接 相等的比较
注意事项
编码转换方法 子串下标计算 拼接的性能 String 方法 intern() 的应用
注释
注释
单行注释 多行注释 文档注释
–32,768 to 32,767
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
1 byte
–128 to 127
Type float double
Storage Requirement 4 bytes
8 bytes
Range
approximately ±3.40282347E+38F (6–7 significant decimal digits)
大纲
☞ 对象构造顺序
方法参数传递:按值调用 类设计基本原则
对象构造顺序
对象构造顺序
类装载时,按类声明中出现的次序执行静态初始化块或静态初始化 语句。
对象构造时: 所有数据域初始化为默认值 按类声明中出现的次序执行初始化块或初始化语句。 如果构造器第一行调用了第二个构造器,则跳转到第二个构造器 中执行,直到返回。 执行这个构造器的主体部分。
Java开发基础
目录
☞ 第1章 Java体系结构
第2章 基本程序结构设计 第3章 对象与类 第4章 继承 第5章 接口与内部类 第6章 事件处理 第7章 异常与调试 第8章 流与文件
Java体系结构
Java体系结构包括如下四大类技术:
Java程序设计语言 Java class文件格式 Java API Java 虚拟机
Java开发基础 PPT课件
大纲
接口与抽象类的选择
☞ 克隆及其注意事项
接口与回调 内部类、局部类、匿名类 JDK的Proxy与CGLib的动态代理区别
克隆及其注意事项
浅克隆与深克隆
默认实现是浅克隆(本地方法实现)(java.util.AbstractMap默 认实现是浅克隆)
如果原始对象与浅克隆对象共享的子对象是不可变的,则不 会产生负面问题。
反射
允许程序在运行时透过Reflection APIs取得任何一个已知名称的class 的内部信息,并可于运行时改变fields内容或唤起 methods。
可动态获取的内容包括
modifiers(诸如public, static ) superclass(例如Object) interfaces(例如Cloneable fields和methods等
的属性 Java 中所有的对象都继承至 ng.Object ,因此都拥有
toString() , equals() ,wait() 等方法
继承的约束
不能实现多继承 父类提供了参数构造函数,子类必须实现 子类不能降低父类方法的可见域 子类不能抛出比父类构造函数或方法更多的异常 子类不能扩展父类的 final 方法
象类不应该依赖于其细节,细节。 接口隔离原则(ISP):不应该强迫客户依赖于它们不用的方
法
类设计基本原则(续)
包设计的基本原则
包内聚性原则(包粒度) 重用发布等价原则(REP):重用的粒度就是发布的粒度。 共同重用原则(CRP):一个包中的所有类应该是共同重用的。 如果重用了包中的一个类,那么就要重用包中的所有类。 共同封闭原则(CCP):包中的所有类对于同一类性质的变化应 该是共同封闭的。一个变化若对一个包产生影响,则将对该包中 的所有类产生影响,而对于其它的包不造成任何影响。 考虑可重用性与可开发性的平衡。
Java2实用教程第4版第6章接口与实现精品PPT课件
}
1.接口声明 接口通过使用关键字interface来声明,格式:
interface 接口的名字
2.接口体
接口体中包含常量定义和方法定义两部分。
第 1 页1 页1 页1 页1 页1 页4
§6.2 实现接口
一个类通过使用关键字implements声明自己实现一个或多个 接口。
class A implements Printable,Addable
第 1 页1 页1 页1 页1 页1 页13
§6.10 应用举例
设计一个广告牌,希望所设计的广告牌可以展示许多公司的 广告词。
1.问题的分析 2.设计接口 3.设计广告牌类
例子6中除了主类(Example6_6) 外,还有Avertisemen接口及实现该 接 口 的 WhiteCloudCorp( 白 云 公 司 ) 和BlackLandCorp(黑土公司),以 及面向接口的AdvertisementBoard类 (广告牌),程序运行效果如图 6.12。
如果一个类实现了某个接口,那么这个类必须重写该接口的
所有方法。
Java提供的接口都在相应的包中,通过import语句不仅可 以引入包中的类,也可以引入包中的接口,例如:
import java.io.*;
不仅引入了java.io包中的类,也同时引入了该包中的接口。
第 1 页1 页1 页1 页1 页1 页5
第 1 页1 页1 页1 页1 页1 页3
§6.1 接口
为了克服Java单继承的缺点,Java使用了接口, 一个类可以实现多个接口。
使用关键字interface来定义一个接口。接口的 定义和类的定义很相似,分为接口的声明和接口体。
interface Printable { final int MAX=100; void add(); float sum(float x ,float y);
1.接口声明 接口通过使用关键字interface来声明,格式:
interface 接口的名字
2.接口体
接口体中包含常量定义和方法定义两部分。
第 1 页1 页1 页1 页1 页1 页4
§6.2 实现接口
一个类通过使用关键字implements声明自己实现一个或多个 接口。
class A implements Printable,Addable
第 1 页1 页1 页1 页1 页1 页13
§6.10 应用举例
设计一个广告牌,希望所设计的广告牌可以展示许多公司的 广告词。
1.问题的分析 2.设计接口 3.设计广告牌类
例子6中除了主类(Example6_6) 外,还有Avertisemen接口及实现该 接 口 的 WhiteCloudCorp( 白 云 公 司 ) 和BlackLandCorp(黑土公司),以 及面向接口的AdvertisementBoard类 (广告牌),程序运行效果如图 6.12。
如果一个类实现了某个接口,那么这个类必须重写该接口的
所有方法。
Java提供的接口都在相应的包中,通过import语句不仅可 以引入包中的类,也可以引入包中的接口,例如:
import java.io.*;
不仅引入了java.io包中的类,也同时引入了该包中的接口。
第 1 页1 页1 页1 页1 页1 页5
第 1 页1 页1 页1 页1 页1 页3
§6.1 接口
为了克服Java单继承的缺点,Java使用了接口, 一个类可以实现多个接口。
使用关键字interface来定义一个接口。接口的 定义和类的定义很相似,分为接口的声明和接口体。
interface Printable { final int MAX=100; void add(); float sum(float x ,float y);
第6章-异常处理ppt课件(全)
6.1 了解异常
❖ 任务3:了解异常类常用的方法 【任务内容】了解异常类常用的方法 【能力目标】掌握异常类常用的方法
public class ExceptionDemo { public static void main(String[] args) { String strPrice = "20"; try { //进行数据类型转换时,parseFloat方法有可能出现异常 float fprice = Float.parseFloat(strPrice); } catch (NumberFormatException nfe) { System.err.println("Exception:" + nfe.getMessage()); System.err.println("Exception:" + nfe.toString()); nfe.printStackTrace(); } }
❖
}
❖ catch( ArithmeticException e )
❖
{ System.out.println("\t捕获异常: "+e);
}
❖ catch( ArrayIndexOutOfBoundsException e )
❖
{ System.out.println("\t捕获异常:"+e.getMessage( )); }
程序中的错误可能来自于编译错误和运行错误。 编译错误是由于所编写的程序存在语法问题,未 能通过由源代码到目标代码的编译过程而产生的 错误,它将由语言的编译系统负责检测和报告; 运行错误是在程序的运行过程中产生的错误。
JAva第 6 章 Java的输入输出.ppt
"rwd" 文件可读可写,并且要求每次更改 文件内容时同步写到存储设备中。
2020/8/16
2020/8/16
Java面向对象程序设计教程
9
输入输出类的分类
文件I/O :FileInputStream 内存缓冲区I/O :BufferedInputStream 存取I/O :DataInputStream 管道I/O :PipedInputStream 过滤器I/O :FilterInputStream
2020/8/16
Java面向对象程序设计教程
10
标准流及其重定向
System.out是标准的输出流,默认情况下, 它是一个控制台。
System.in是标准输入流,默认情况下, 它指的是键盘。
System.err指的是标准错误流,它默认是 控制台。
这些流可以重定向到任何兼容的输入/输出 设备。
6.3 数据持久化
• 6.3.1 对象串行化 • 6.3.2 XML文件的输入输出 • 6.3.3 JDBC入门
6.4 文件类的应用
• 6.4.1 File类 • 6.4.2 File类应用举例
2020/8/16
Java面向对象程序设计教程
2
6.1 流输入/输出类的层次结构
流的概念
流(Stream)是有序的数据序列,它有源(输入流)与 目的(输出流)。
举例:RedirectSample.java
2020/8/16
Java面向对象程序设计教程
11
IOException及其子类
在java.io中,每一个特定的I/O错误都是 用异常IOException及其子类来报告的。
最常见的I/O异常有 FileNotFoundException、 EOFException、 InterruptedIOException、 UTFDataFormatError等。
2020/8/16
2020/8/16
Java面向对象程序设计教程
9
输入输出类的分类
文件I/O :FileInputStream 内存缓冲区I/O :BufferedInputStream 存取I/O :DataInputStream 管道I/O :PipedInputStream 过滤器I/O :FilterInputStream
2020/8/16
Java面向对象程序设计教程
10
标准流及其重定向
System.out是标准的输出流,默认情况下, 它是一个控制台。
System.in是标准输入流,默认情况下, 它指的是键盘。
System.err指的是标准错误流,它默认是 控制台。
这些流可以重定向到任何兼容的输入/输出 设备。
6.3 数据持久化
• 6.3.1 对象串行化 • 6.3.2 XML文件的输入输出 • 6.3.3 JDBC入门
6.4 文件类的应用
• 6.4.1 File类 • 6.4.2 File类应用举例
2020/8/16
Java面向对象程序设计教程
2
6.1 流输入/输出类的层次结构
流的概念
流(Stream)是有序的数据序列,它有源(输入流)与 目的(输出流)。
举例:RedirectSample.java
2020/8/16
Java面向对象程序设计教程
11
IOException及其子类
在java.io中,每一个特定的I/O错误都是 用异常IOException及其子类来报告的。
最常见的I/O异常有 FileNotFoundException、 EOFException、 InterruptedIOException、 UTFDataFormatError等。
java面向对象第六章 类的继承性
回顾:什么是封装
面向对象三大特征之一——封装 封装的概念
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访 问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 隐藏类的 实现细节 方便加入控 制语句
封装的好处
只能通过规 定方法访问 数据
方便修改实现
回顾及提问
构造方法的语法要求是什么? static和final的含义是什么?
16
Java还允许在子类中对父类原有的方法进行重写,以实现
新的功能。 所谓方法覆盖,是指在子类中重新定义一个方法的内 容,该方法与父类的某一方法在方法名、参数(包括类 型、个数、次序)、返回值类型 完全相同。
当子类对象中调用这一方法时,调用的是子类改写过 的方法,而父类中的原有方法被覆盖。
Hale Waihona Puke 17参数: 名字:类型,名字:类型
类型
返回值 类型
这两个类图有什么问题?
Dog - name:String - health:int - love:int - strain:String + print():void + getName():String + getHealth ():int + getLove():int + getStrain:String + Dog()
20
//父类代码与前面相同,这里省略不写 class B extends A{
//子类继承父类
double x=-12.345
//变量隐藏
int y=100; //子类新增属性 public void setY(int y){ //子类新增方法 this.y=y; } public int getY(){ //子类新增方法 return y; } public String toString(){ //子类改写父类方法,即方法覆盖 String information=""; information=information+"x= "+x+"\n"; 程序运行结果:
Java程序设计第2版第六章.ppt
第6章 类与对象
2020/4/6
1
通过本章的学习,主要掌握以下知识点:
类的基本概念 对象的创建与使用 对象的使用 成员的调用
本章的重点:
创建类
本章的难点:
类修饰符 成员数量与成员方法修饰符
2020/4/6
2
在前面的章节中,对Java的简单数据类型、 数组、运算符和表达式及流程控制的方法作了详细 的介绍。从本章开始将介绍面向对象的程序设计方 法。面向对象的编程思想是力图使在计算机语言中 对事物的描述与现实世界中该事物的本来面目尽可 能的一致。所以在面向对象的程序设计中, 类(Class)和对象(Object)是面向对象程序设计方 法中最核心概念。
• 例:
变量 name--鱼名称
color--鱼颜色 函数
setValue() --赋值 name、color
output()-- 显示 name、color
分别用“面向过程”、“面向对象” 编程思想实 现。
2020/4/6
5
1. 面向过程源程序: Fish.c
# include <stdio.h>
//属性变量color--描述鱼的颜色
void setValue (String n, String c ) //方法setValue :给成员变量赋值
{ name=n;
color=c;
}
void output( )
//方法output :显示成员变量
{ System.out.println (name); System.out.println (color);
char name[20]=“ ”; char color[20]=“ ”; main() { void setValue(char n[], char c[]);
2020/4/6
1
通过本章的学习,主要掌握以下知识点:
类的基本概念 对象的创建与使用 对象的使用 成员的调用
本章的重点:
创建类
本章的难点:
类修饰符 成员数量与成员方法修饰符
2020/4/6
2
在前面的章节中,对Java的简单数据类型、 数组、运算符和表达式及流程控制的方法作了详细 的介绍。从本章开始将介绍面向对象的程序设计方 法。面向对象的编程思想是力图使在计算机语言中 对事物的描述与现实世界中该事物的本来面目尽可 能的一致。所以在面向对象的程序设计中, 类(Class)和对象(Object)是面向对象程序设计方 法中最核心概念。
• 例:
变量 name--鱼名称
color--鱼颜色 函数
setValue() --赋值 name、color
output()-- 显示 name、color
分别用“面向过程”、“面向对象” 编程思想实 现。
2020/4/6
5
1. 面向过程源程序: Fish.c
# include <stdio.h>
//属性变量color--描述鱼的颜色
void setValue (String n, String c ) //方法setValue :给成员变量赋值
{ name=n;
color=c;
}
void output( )
//方法output :显示成员变量
{ System.out.println (name); System.out.println (color);
char name[20]=“ ”; char color[20]=“ ”; main() { void setValue(char n[], char c[]);
Java语言程序设计基础教程课件(第6章)
通过滚动条来观察每个组件
只能向滚动面板添加一个组件
构造方法
ScrollPane() ScrollPane(int a)
a的取值: 1)SCROLLBARS_ALWAYS 、
2)SCROLLBARS_AS_NEEDED、
3)SCROLLBARS_NEVER
P134【例6-3】使用ScrollPane容器
con.add(String s,Component b) con.add(Component b,String s)
card.show(con,s) card.first(con) st(con) card.previous(con) card.next(con)
Container(容器)的子类,属内层容器
在外层容器内部实现分块布局
默认布局是FlowLayout布局
常用方法同Frame
java.awt.ScrollPane类——滚动面板
P133 【例6-2】使用Panel容器
6.3.3 ScrollPane
java.awt.ScrollPane——滚动面板
但是它的主要功能是容纳其它组件和容器
容器通过add()方法向容器中添加组件。
有三种类型的常用容器:
Frame、 Panel、 ScrollPane。
6.3.1 Frame
Frame类是Container类的间接子类
可以向窗口添加组件
顶层容器,不容许被添加
默认布局是BorderLayout
方法说明
绘制组件
重绘组件 设置组件的大小和位置 设置组件可见性 设置鼠标指向组件时的光 标形状。 将变化后的界面显示出来 更新组件
只能向滚动面板添加一个组件
构造方法
ScrollPane() ScrollPane(int a)
a的取值: 1)SCROLLBARS_ALWAYS 、
2)SCROLLBARS_AS_NEEDED、
3)SCROLLBARS_NEVER
P134【例6-3】使用ScrollPane容器
con.add(String s,Component b) con.add(Component b,String s)
card.show(con,s) card.first(con) st(con) card.previous(con) card.next(con)
Container(容器)的子类,属内层容器
在外层容器内部实现分块布局
默认布局是FlowLayout布局
常用方法同Frame
java.awt.ScrollPane类——滚动面板
P133 【例6-2】使用Panel容器
6.3.3 ScrollPane
java.awt.ScrollPane——滚动面板
但是它的主要功能是容纳其它组件和容器
容器通过add()方法向容器中添加组件。
有三种类型的常用容器:
Frame、 Panel、 ScrollPane。
6.3.1 Frame
Frame类是Container类的间接子类
可以向窗口添加组件
顶层容器,不容许被添加
默认布局是BorderLayout
方法说明
绘制组件
重绘组件 设置组件的大小和位置 设置组件可见性 设置鼠标指向组件时的光 标形状。 将变化后的界面显示出来 更新组件
Java语言程序设计第6章_数组与字符串
6.3.3 正则表达式中的限定符
▪ 在使用正则表达式时,如果需要某一类型的元字符多次输出, 逐个输入就相当麻烦,这时可以使用正则表达式的限定元字 符来重复次数。
例如:
regex=”hello[246]?” 那么”hello”、”hello2”、 ”hello4”、 ”hello6”都是与 regex匹配的字符串。
以上构造方法中,使用最多的是第2个,如:
String s = new String(“Hello World“);
字符数组要转化为字符串可以利用第3个构造方法。例如:
Char[] helloArray={‘h’,’e’,’l’,’l’,’o’}; String s = new String(helloArray);
▪ 二维数组的元素是一维数组,因此,初始化时也可允许各行单 独进行。Java的二维数组允许各行有不同的元素个数。例如:
▪ double score[][]; ▪ score = new double[3][]; ▪ score[0] = new double[3]; ▪ score[1] = new double[2]; ▪ score[2] = new double[4];
▪ public String (String s); //用已有字符串创建新的String。
▪ public String (StringBuffer buf) ; //用StringBuffer对 象的内容初始化新String。
▪ public String (char value[]); //用已有字符数组初始 化新String。
double score [] []={{56.8,42.5,96.8};{100,78},{99,63,78,45}}
java技术.ppt
• 如果一个方法调用一个抛出受检异常的 方法(含有throws列表的方法),则该方法 必须捕捉这些受检异常,或通过throws 列表声明这些异常
2020/11/2
Java 程序设计
15
重新抛出异常
• 如果catch语句块不处理某种异常,可以重 新抛出异常
– 抛出异常的方法: throw e;
– 由其外层的try- catch 语句块处理
2020/11/2
Java 程序设计
16
• Practice makes perfect.
2020/11/2
Java 程序设计
17
2020/11/2
Java 程序设计
5
什么时候会发生异常?
• 数组的下标越界 • 打开不存在的文件 • 网络无法连接 • 操作数超出所要求的范围 • 少了所需加载的类,
• 自定义异常,要求程序处理
2020/11/2
Java 程序设计
6
处理异常的几种常用方法
1. 一旦捕获异常,马上进行处理 2. 重新抛出异常 3. 捕获异常,但并不处理 4. 通过语句System.exit()退出应用程序
• 异常随时都可以发生
– ArrayIndexOutOfBoundsException – NullPointerException – 定义了引用,但不指向任何对象(object) – ClassCastException
• 数据类型间的转换不合法
• 良好的编程习惯,可以减少很多异常的 发生
2020/11/2
Java程序设计 Programming in Java
清华大学
Tsinghua University
2020/11/2
2020/11/2
Java 程序设计
15
重新抛出异常
• 如果catch语句块不处理某种异常,可以重 新抛出异常
– 抛出异常的方法: throw e;
– 由其外层的try- catch 语句块处理
2020/11/2
Java 程序设计
16
• Practice makes perfect.
2020/11/2
Java 程序设计
17
2020/11/2
Java 程序设计
5
什么时候会发生异常?
• 数组的下标越界 • 打开不存在的文件 • 网络无法连接 • 操作数超出所要求的范围 • 少了所需加载的类,
• 自定义异常,要求程序处理
2020/11/2
Java 程序设计
6
处理异常的几种常用方法
1. 一旦捕获异常,马上进行处理 2. 重新抛出异常 3. 捕获异常,但并不处理 4. 通过语句System.exit()退出应用程序
• 异常随时都可以发生
– ArrayIndexOutOfBoundsException – NullPointerException – 定义了引用,但不指向任何对象(object) – ClassCastException
• 数据类型间的转换不合法
• 良好的编程习惯,可以减少很多异常的 发生
2020/11/2
Java程序设计 Programming in Java
清华大学
Tsinghua University
2020/11/2
java核心课件2第6章
public static void registerDriver(Driver driver) throws SQLException 向驱动程序管理器注册一个驱动程序。
public static void deregisterDriver(Driver driver)throws SQLException 删除驱动程序管理器中的一个驱动程序。
双击
最后确定
6.4 JDBC编程的基本步骤
❖ 简单的说JDBC主要完成三件事:
第一与数据库建立连接; 第二向数据库发送SQL语句; 第三处理数据库返回结果。
❖ 具体步骤如下:
第一步:向驱动程序管理器加载、注册JDBC驱动程序。 第二步:获得特定 的数据库连接。 第三步:得到SQL语句容器,并发送SQL语句。 第四步:如果 SQL语言有结果集返回的话 ,处理结果集 。 第五步:关闭数据库连接,这一步非常重要,因为数据
❖ 注意异常处理
6.4.4 得到SQL语句容器,并向数据库发送SQL语句
获得SQL语句容器的方法定义在Connection接口中,通过Connection接口我们 可以得到三种类型的容器,如下所示: (1) public Statement createStatement()throws SQLException 获得SQL语句的容器结果不可滚动不可更新。 (2)public PreparedStatement preparedStatement(String sql) throws
库连接是一种非常宝贵的资源,在使用完毕后,必须关 闭数据库连接,应放在finally语句中。
JDBC 程序访问数据库的步骤 2-1
开始
导入 java.sql包
加载并注册驱动程序 创建一个 Connection 对象
public static void deregisterDriver(Driver driver)throws SQLException 删除驱动程序管理器中的一个驱动程序。
双击
最后确定
6.4 JDBC编程的基本步骤
❖ 简单的说JDBC主要完成三件事:
第一与数据库建立连接; 第二向数据库发送SQL语句; 第三处理数据库返回结果。
❖ 具体步骤如下:
第一步:向驱动程序管理器加载、注册JDBC驱动程序。 第二步:获得特定 的数据库连接。 第三步:得到SQL语句容器,并发送SQL语句。 第四步:如果 SQL语言有结果集返回的话 ,处理结果集 。 第五步:关闭数据库连接,这一步非常重要,因为数据
❖ 注意异常处理
6.4.4 得到SQL语句容器,并向数据库发送SQL语句
获得SQL语句容器的方法定义在Connection接口中,通过Connection接口我们 可以得到三种类型的容器,如下所示: (1) public Statement createStatement()throws SQLException 获得SQL语句的容器结果不可滚动不可更新。 (2)public PreparedStatement preparedStatement(String sql) throws
库连接是一种非常宝贵的资源,在使用完毕后,必须关 闭数据库连接,应放在finally语句中。
JDBC 程序访问数据库的步骤 2-1
开始
导入 java.sql包
加载并注册驱动程序 创建一个 Connection 对象
Java_Web应用开发技术与案例教程课件第6章第2节 Servlet常用接口、类及其方法
第5节 MVC开发模式与应用案例
在开发一个Web应用程序时,通常需要同时使用这3种技术,并分别承担不同的职责 。 JSP一般用来编写用户界面层的信息显示,充当视图层的角色(简称为V); Servlet主要用来扮演任务的执行者,一般充当着控制层的角色(简称为C); JavaBean主要实现业务逻辑的处理,充当模型层的角色(简称为M)。
1.javax.servlet.http.HttpServletRequest
类HttpServletRequest的对象对应JSP的request对象, 常用方法:
void setCharacterEncoding(): 设置请求信息字符编码,常用于解决post方式下参数值汉字乱码问题。
String getParameter(String paraName):获取单个参数值。 String[] getParameterValues(String paraName):
假设,组件之间共享数据的参数为:username(用户名称)和userpwd(密码)。
【实现】 (1)登录页面login.jsp (2)处理登录的Servlet:LoginCheckServlet.java (3)显示结果的页面Info.jsp
【运行】《程序执行》
回顾上次课介绍的内容
1、如何创建Servlet? 一般在创建时,直接采用注解方式,配置servlet_形成访问地址,利用该地址,对 servlet 运行 2、重写 doGet(参数:请求,相应参数) doPost(参数) 3、部署 4、运行——利用该地址,对servlet 运行 5、给出了设计案例
的JSP页面。并且,在跳转到新组件后,重新创建request对象。 response.sendRedirect("JSP网页地址");
《Java课件》第6章基本可重用类1(语言包)
与字符串s比较相等否,相等返回true;反之,返回false
public int compareTo(String s) 与字符串s比较字典顺序, 相等返回0;
当前串大于s返回1;当前串小于s返回-1
例:String s="Hello !";
System.out.println(s.length()); //将输出7 System.out.println(s.charAt(1)); //将输出e System.out.println(s.equals("Hello! ")); //将输出false System.out.println(pareTo(“Hello! ")); //将输出-1
…..
Java.io.File
….. ….. ….. …..
Java.applet
Java.swing
图6-1
Java工具包层次图
Java常用包简介:
(1)ng包 主要含有与语言相关的类。ng包 由解释程序自动加载,不需显式说明。
(2)jave.io包 主要含有与输入输出相关的类,这些类提 供了对不同的输入输出设备读写数据的支持, 这些输入和输出 设备包括键盘、显示器、打印机、磁盘文件和网络等。 (3)java.util包 包括许多具有特定功能的类,有日期、 向量、哈希表、锁和堆栈等,其中Date类支持与时间有关的操 作。 (4)java.awt包和java.swing包 提供了创建图形用户界 面元素的类。通过这些元素,编程者可以控制所写Applet或用 户程序的外观界面。该包中包含定义窗口、对话框、按钮、复 选框、列表、菜单、滚动条及文本域的类。
(5)包
含有与网络操作相关性的类,如URL、
public int compareTo(String s) 与字符串s比较字典顺序, 相等返回0;
当前串大于s返回1;当前串小于s返回-1
例:String s="Hello !";
System.out.println(s.length()); //将输出7 System.out.println(s.charAt(1)); //将输出e System.out.println(s.equals("Hello! ")); //将输出false System.out.println(pareTo(“Hello! ")); //将输出-1
…..
Java.io.File
….. ….. ….. …..
Java.applet
Java.swing
图6-1
Java工具包层次图
Java常用包简介:
(1)ng包 主要含有与语言相关的类。ng包 由解释程序自动加载,不需显式说明。
(2)jave.io包 主要含有与输入输出相关的类,这些类提 供了对不同的输入输出设备读写数据的支持, 这些输入和输出 设备包括键盘、显示器、打印机、磁盘文件和网络等。 (3)java.util包 包括许多具有特定功能的类,有日期、 向量、哈希表、锁和堆栈等,其中Date类支持与时间有关的操 作。 (4)java.awt包和java.swing包 提供了创建图形用户界 面元素的类。通过这些元素,编程者可以控制所写Applet或用 户程序的外观界面。该包中包含定义窗口、对话框、按钮、复 选框、列表、菜单、滚动条及文本域的类。
(5)包
含有与网络操作相关性的类,如URL、
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
for(i=0;i<len;i++)
System.out.print(" "+arX[i]);
System.out.println("\n arY的原始数据");//打印Y数组
for(i=0;i<len;i++)
System.out.print(" "+arY[i]);
p1.add(arX,arY); //调用add方法计算两个数组之和 System.out.println("\n 再次输出arX");
后的一对花括号内,给这个数组的所有数组元素赋上初始值。 例如:int[ ] a1={23,-9,38,8,65};
2.用关键字new初始化数组
(1) 先声明数组,再初始化数组。 类型标识符 数组名[ ]; 数组名=new 类型标识符[数组长度];
(2) 在声明数组的同时用new关键字初始化数组。相当于将上 面所述的两条语句合并为一条语句。格式如下:
运行结果: arX的原始数据
1376 arY的原始数据
78 0 42 5 再次输出arX
1376 再次输出arY
79 3 49 11
}
9
6.2.6 同类型不同长度的数组引用同一个成员方法 在Java语言中,数组也是一种对象,因此,只要数组元素
的数据类型相同,而不论其长度是否一致,都可以引用同一个 成员方法,完成所需要的操作。
6.1.2 一维数组的初始化 声明一个数组仅仅为这个数组指定数组名和数组元素的类
型,并不为数组元素分配实际的存储空间。在Java程序中把这 一工作放在数组的初始化时进行。数组经过初始化后,其长度 (即可存放的元素个数)就不可再改变。 初始化方式: 直接指定初值和用new操作符两种方式。
2
1.直接指定初值的方式 在声明一个数组的同时将数组元素的初值依次写入赋值号
6.2 一维数组引用举例
6.2.1 测定数组的长度 6.2.3 数组间相互赋值
4
6.2.4 向成员方法传递数组元素 向成员方法传递数组元素也就是用数组元素作为成员方法
的实参。由于实参可以是表达式,而数组元素可以是表达式的 组成部分,因此,数组元素可以作为成员方法的实参。数组元 素作为成员方法的实参与用变量作为实参一样,是单向值传递, 即只能由数组元素传递给形参,程序中对形参的任何修改并不 改变数组元素的值。
} public class c6_6{
public static void main(String[ ] args){ int i,k; int arX[ ]={1,3,7,6}; int arY[ ]={78,0,42,5}; int len=arX.length; Add1Class p1=new Add1Class( ); System.out.println(" arX的原始数据");//打印X数组
for(i=0;i<len;i++) System.out.print(" "+arX[i]);
System.out.println("\n 再次输出arY"); for(i=0;i<len;i++)
System.out.print(" "+arY[i]); System.out.println("\n"); }
【示例程序c6_7.java】 有两个一维数组s1和s2,s1存放着8 名学生的成绩,s2存放着5名学生的成绩,分别求出这两组学生 的平均成绩。 public class c6_7{
System.out.println("k="+k);
for(int i=0;i<len;i++)
System.out.print(" "+arr[i]);
System.out.println("\n");
}
}
6
6.2.5 向成员方法传递数组 在定义成员方法时可以用数组作为它的形参,且只指定数
组名和它的数据类型,而不指定数组的长度。在这种情况下引 用该成员方法时,必须用具有相同数据类型的数组名作为成员 方法对应位置的实参,即向成员方法传递数组。更应强调的是: 数组名作为成员方法的实参时,是把实参数组的起始地址传递 给形参数组,即两个数组共用同一段内存单元,因此,在成员 方法中对形参数组中各元素值的修改,都会使实参数组元素的 值也发生同样的变化。这种参数的传递方式被称为“双向地址 传递”。
第6章 数 组
6.1 一维数组 6.2 一维数组引用举例 6.3 二维数组 6.4 二维数组的引用
1
6.1 一 维 数 组
6.1.1 一维数组的声明 数组的声明格式如下: 类型标识符 数组名[ ]; 或 类型标识符[ ] 数组名;
说明:数组元素的数据类型可以是Java的任何数据类型,如基 本类型(int、float、double、char等),类或接口等。
【示例程序c6_6.java】 两个数组相加,将结果存入第二个 数组中。
7
class Add1Class{ void add(int arA[ ],int arB[ ]){ int i; int len=arA.length; for(i=0;i<len;i++) arB[i]=arA[i]+arB[i]; }
public class c6_5{
public static void main(String[ ] args){ int arr[ ]={6,8,9}; //声明并初始化数组arr
int len=arr.length, k;
ff p1=new ff( );
k=p1.aa(arr[0],arr[1]);//arr[0]和arr[1]为方法aa的实参
类型标识符 数组名[ ]=new 类型标识符[数组长度]; 或
类型标识符[ ] 数组名=new 类型标识符[数组长度];
3
6.1.3 一维数组的引用 当数组初始化后就可通过数组名与下标来引用数组中的每
一个元素。一维数组元素的引用格式如下: 数组名[数组下标]
注意:数组下标的取值范围是0~(数组长度-1),下标值可以是 整数型常量或整数型变量表达式。
【示例程序c6_5.java】 数组元素作为成员方法的实参,在 成员方法中改变形参x和y的值,方法调用结束后实参数组元素 的值没有改变。
5
class ff{
int aa(int x,int y){
int z;
运行结果:
x=x+4;y=y+2; z=x*y;
for(i=0;i<len;i++)
System.out.print(" "+arX[i]);
System.out.println("\n arY的原始数据");//打印Y数组
for(i=0;i<len;i++)
System.out.print(" "+arY[i]);
p1.add(arX,arY); //调用add方法计算两个数组之和 System.out.println("\n 再次输出arX");
后的一对花括号内,给这个数组的所有数组元素赋上初始值。 例如:int[ ] a1={23,-9,38,8,65};
2.用关键字new初始化数组
(1) 先声明数组,再初始化数组。 类型标识符 数组名[ ]; 数组名=new 类型标识符[数组长度];
(2) 在声明数组的同时用new关键字初始化数组。相当于将上 面所述的两条语句合并为一条语句。格式如下:
运行结果: arX的原始数据
1376 arY的原始数据
78 0 42 5 再次输出arX
1376 再次输出arY
79 3 49 11
}
9
6.2.6 同类型不同长度的数组引用同一个成员方法 在Java语言中,数组也是一种对象,因此,只要数组元素
的数据类型相同,而不论其长度是否一致,都可以引用同一个 成员方法,完成所需要的操作。
6.1.2 一维数组的初始化 声明一个数组仅仅为这个数组指定数组名和数组元素的类
型,并不为数组元素分配实际的存储空间。在Java程序中把这 一工作放在数组的初始化时进行。数组经过初始化后,其长度 (即可存放的元素个数)就不可再改变。 初始化方式: 直接指定初值和用new操作符两种方式。
2
1.直接指定初值的方式 在声明一个数组的同时将数组元素的初值依次写入赋值号
6.2 一维数组引用举例
6.2.1 测定数组的长度 6.2.3 数组间相互赋值
4
6.2.4 向成员方法传递数组元素 向成员方法传递数组元素也就是用数组元素作为成员方法
的实参。由于实参可以是表达式,而数组元素可以是表达式的 组成部分,因此,数组元素可以作为成员方法的实参。数组元 素作为成员方法的实参与用变量作为实参一样,是单向值传递, 即只能由数组元素传递给形参,程序中对形参的任何修改并不 改变数组元素的值。
} public class c6_6{
public static void main(String[ ] args){ int i,k; int arX[ ]={1,3,7,6}; int arY[ ]={78,0,42,5}; int len=arX.length; Add1Class p1=new Add1Class( ); System.out.println(" arX的原始数据");//打印X数组
for(i=0;i<len;i++) System.out.print(" "+arX[i]);
System.out.println("\n 再次输出arY"); for(i=0;i<len;i++)
System.out.print(" "+arY[i]); System.out.println("\n"); }
【示例程序c6_7.java】 有两个一维数组s1和s2,s1存放着8 名学生的成绩,s2存放着5名学生的成绩,分别求出这两组学生 的平均成绩。 public class c6_7{
System.out.println("k="+k);
for(int i=0;i<len;i++)
System.out.print(" "+arr[i]);
System.out.println("\n");
}
}
6
6.2.5 向成员方法传递数组 在定义成员方法时可以用数组作为它的形参,且只指定数
组名和它的数据类型,而不指定数组的长度。在这种情况下引 用该成员方法时,必须用具有相同数据类型的数组名作为成员 方法对应位置的实参,即向成员方法传递数组。更应强调的是: 数组名作为成员方法的实参时,是把实参数组的起始地址传递 给形参数组,即两个数组共用同一段内存单元,因此,在成员 方法中对形参数组中各元素值的修改,都会使实参数组元素的 值也发生同样的变化。这种参数的传递方式被称为“双向地址 传递”。
第6章 数 组
6.1 一维数组 6.2 一维数组引用举例 6.3 二维数组 6.4 二维数组的引用
1
6.1 一 维 数 组
6.1.1 一维数组的声明 数组的声明格式如下: 类型标识符 数组名[ ]; 或 类型标识符[ ] 数组名;
说明:数组元素的数据类型可以是Java的任何数据类型,如基 本类型(int、float、double、char等),类或接口等。
【示例程序c6_6.java】 两个数组相加,将结果存入第二个 数组中。
7
class Add1Class{ void add(int arA[ ],int arB[ ]){ int i; int len=arA.length; for(i=0;i<len;i++) arB[i]=arA[i]+arB[i]; }
public class c6_5{
public static void main(String[ ] args){ int arr[ ]={6,8,9}; //声明并初始化数组arr
int len=arr.length, k;
ff p1=new ff( );
k=p1.aa(arr[0],arr[1]);//arr[0]和arr[1]为方法aa的实参
类型标识符 数组名[ ]=new 类型标识符[数组长度]; 或
类型标识符[ ] 数组名=new 类型标识符[数组长度];
3
6.1.3 一维数组的引用 当数组初始化后就可通过数组名与下标来引用数组中的每
一个元素。一维数组元素的引用格式如下: 数组名[数组下标]
注意:数组下标的取值范围是0~(数组长度-1),下标值可以是 整数型常量或整数型变量表达式。
【示例程序c6_5.java】 数组元素作为成员方法的实参,在 成员方法中改变形参x和y的值,方法调用结束后实参数组元素 的值没有改变。
5
class ff{
int aa(int x,int y){
int z;
运行结果:
x=x+4;y=y+2; z=x*y;