JAVA第6章
java答案第六章
Java语言程序设计第六章课后习题答案1.将本章例6-1至6-18中出现的文件的构造方法均改为使用File类对象作为参数实现。
个人理解:File类只能对整文件性质进行处理,而没法通过自己直接使用file.Read()或者是file.write()类似方法对文件内容进行写或者读取。
注意:是直接;下面只提供一个例2变化,其他的你自己做,10几道啊,出这题的人真他妈有病。
import java.io.*;public class test6_2{public static void main(String[] args) throws IOException { String fileName = "D:\\Hello.txt";File writer=new File(fileName);writer.createNewFile();BufferedWriter input = new BufferedWriter(newFileWriter(writer));input.write("Hello !\n");input.write("this is my first text file,\n");input.write("你还好吗?\n");input.close();}}运行结果:(电脑系统问题,没法换行,所以一般使用BuffereWriter中newLine()实现换行)2.模仿文本文件复制的例题,编写对二进制文件进行复制的程序.// CopyMaker类import java.io.*;class CopyMaker {String sourceName, destName;BufferedInputStream source;BufferedOutputStream dest;int line;//打开源文件和目标文件,无异常返回trueprivate boolean openFiles() {try {source = new BufferedInputStream(newFileInputStream( sourceName ));}catch ( IOException iox ) {System.out.println("Problem opening " + sourceName );return false;}try {dest = new BufferedOutputStream(newFileOutputStream( destName ));}catch ( IOException iox ){System.out.println("Problem opening " + destName );return false;}return true;}//复制文件private boolean copyFiles() {try {line = source.read();while ( line != -1 ) {dest.write(line);line = source.read();}}catch ( IOException iox ) {System.out.println("Problem reading or writing" );return false;}return true;}//关闭源文件和目标文件private boolean closeFiles() {boolean retVal=true;try { source.close(); }catch ( IOException iox ) {System.out.println("Problem closing " + sourceName );retVal = false;}try { dest.close(); }catch ( IOException iox ) {System.out.println("Problem closing " + destName );retVal = false;}return retVal;}//执行复制public boolean copy(String src, String dst ) {sourceName = src ;destName = dst ;return openFiles() && copyFiles() && closeFiles();}}//test6_2public class test6_2{public static void main ( String[] args ) {String s1="lin.txt",s2="newlin.txt";if(new CopyMaker().copy(s1, s2))S ystem.out.print("复制成功");elseS ystem.out.print("复制失败");}}运行前的两个文本:lin.txt和newlin.txt(为空)运行后:3.创建一存储若干随机整数的文本文件,文件名、整数的个数及范围均由键盘输入。
7第六章 JAVA系统常用类练习
⑵ 根据上述简要分析,给出如下参考程序代码(TriangleFunctio.java):
class TriangleFunction {
public void display(double d1,double d2,double step) {
System.out.println("度数 sin --------------- cos -----------------tan");
Arrays.sort(a[i]); // 对每一位选手的得分进行排序 System.out.print((i+1)+". "); int total=0; //统计每一位选手的得分,去掉一个最高分和一个最低分 for(int j=1; j<m-1; j++) {
System.out.print(a[i][j]+" "); //输出各评委的打分 total+=a[i][j]; } System.out.println((float)total/(m-2)+" \n"); //输出选手的最终得分 }
class ExecExterior {
public static void main(String args[]) throws Exception {
Runtime rt = Runtime.getRuntime(); //创建对象 System.out.println("最大内存: " +rt.maxMemory()); System.out.println("总内存: " +rt.totalMemory()); System.out.println("可用内存: " +rt.freeMemory()); long n0=System.currentTimeMillis(); //记录进入绘图时间 Process p1=rt.exec("mspaint"); //调用绘图程序并创建 Process 对象 p1.waitFor(); //等待绘图操作结束 long n1=System.currentTimeMillis(); //记录结束绘图时间 n1=(n1-n0)/1000; //以秒为单位计算绘图所需时间 System.out.println(" 绘 制 这 样 一 幅 图 画 花 费 了 "+n1/3600+" 小 时 "+n1/60%60+" 分 "+n1%60+"秒"); }
第6章 集合类(黑马程序员版)
接下来通过一个案例来学习这些方法的使用,请查看教材文件6-2。
✎ 6.3 List接口
Iterator接口
在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提 供了一个接口Iterator。Iterator接口也是Java集合中的一员,但它与Collection、 Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主 要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代 器。
பைடு நூலகம்
✎ 6.3 List接口
图中,通过两张图描述了LinkedList集合新增元素和删除元素的过程。其中,左 图为新增一个元素,图中的元素1和元素2在集合中彼此为前后关系,在它们之 间新增一个元素时,只需要让元素1记住它后面的元素是新元素,让元素2记住 它前面的元素为新元素就可以了。右图为删除元素,要想删除元素1与元素2之 间的元素3,只需要让元素1与元素2变成前后关系就可以了。由此可见 LinkedList集合具有增删元素效率高的特点。
图中,在调用Iterator的next()方法之前,迭代器的索引位于第一个元素之前,不指 向任何元素,当第一次调用迭代器的next()方法后,迭代器的索引会向后移动一位, 指向第一个元素并将该元素返回,当再次调用next()方法时,迭代器的索引会指向 第二个元素并将该元素返回,依此类推,直到hasNext()方法返回false,表示到达了 集合的末尾,终止对元素的遍历。
☞点击查看本小节知识架构
模拟KTV点歌系统
Set接口
☞点击查看本小节知识架构
模拟新浪微博用户注册
Map接口
☞点击查看本小节知识架构
Java程序设计教程第6章6.2 类的方法
定义带参数的方法
public class ZhazhiJi {
public String zhazhi ( String fruit ) { String juice = fruit + "汁";
本章任务
4/61
会定义和使用类的无参方法 理解变量作用域 会添加JavaDoc注释 会定义带参方法 会使用带参方法 会创建包组织Java工程
本章目标
5/61
类的方法
按此按钮, 狮子开始跑
电动玩具狮子 属性:
颜色:黄色
问题
按此按钮, 狮子开始叫
行为: 跑 叫 抢球
写出狮子对象的“跑”方法、 “叫”方法、“抢 球”方法
public static void main(String[] args){
Student stu = new Student(); name = "神仙姐姐";
stu.sex
sex = 'F'; age = 18;
stu.age
stu.show();
}
}
3/61
实现计算平均分和课程总成绩 实现MyShopping系统菜单切换 实现MyShopping系统入口程序 实现客户信息的添加和显示 修改客户姓名 对客户姓名排序 实现模拟账户存取款功能
语法
对象名.方法名();
问题
小明过生日,爸爸送他一个电动狮子玩具,编程 测试这个狮子能否正常工作
10/61
方法调用
public class AutoLion {
String color = "黄色"; //颜色
/*跑*/ public void run(){
《Java面向对象编程》课件——第6章 类的多态
02 多态转型
多态转型,多态转型有两种,分Fra bibliotek是向上转型和向下转型。
➢ 向上转型 就是指子类对象赋值给父类引用
➢ 向下转型 是指一个已经向上转型的子类对象可以使用强制类型转换的格式,
将父类引用转为子类引用,向下转型的格式如下: 子类类型 变量名 = (子类类型) 父类类型的变量;
➢ 为了防止向下转型的失败,我们可以在向下转型前,进行数据类 型判断,判断父类类型的变量是否是由子类对象向上转型而来, 我们可以通过instanceof关键字来判断某个对象是否属于某种数据 类型,使用格式如下: boolean b = 对象 instanceof 数据类型;
}
class Dog extends Animal{ String color;
}
public class Demo3 { public static void main(String[]
args) { Animal animal=new Dog(); ="小黑";
System.out.println(); }
象 p1.work(); //调用子类方法 Persion p2=new Teacher(); p2.work();
} }
01 多态概述
在多态中,我们知道父类变量调用方法时,会调用子类对象的方法,那么在父类 变量访问成员变量,是访问哪个成员变量呢,接下来通过一个具体的案例来演示,代码 如下:
class Animal{ String name; int age;
《java面向对象课程设计》课程
第6章 类的多态
学 习 内 容
01 多态概述
02
多态转型
01 多态概述
解析JAVA程序设计第六章课后答案
第6章习题解答1.简述Java中设计图形用户界面程序的主要步骤。
对于设计图形用户界面程序而言,一般分为两个步骤:第一步,设计相应的用户界面,并根据需要对相关的组件进行布局;第二步,添加相关的事件处理,如鼠标、菜单、按钮和键盘等事件。
2.试说明容器与组件之间的关系。
组件(component)是图形用户界面中的各种部件(如标签、按钮、文本框等等),所有的组件类都继承自JComponent类。
容器(container)是用来放置其他组件的一种特殊部件,在java中容器用Container类描述。
3.阅读下面程序,说明其运行结果和功能。
//filename:MyFrame.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyFrame{public static void main(String agrs[]){JFrame f=new JFrame("简单窗体示例");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JLabel l=new JLabel("习题1");f.getContentPane().add(l,BorderLayout.CENTER);f.pack();f.setVisible(true);}}程序的运行结果如下:4.阅读下面程序,说明其运行结果和功能。
//filename:TestButton.javaimport java.awt.*;import javax.swing.*;public class TestButton extends JFrame{JButton b1,b2;TestButton(String s){super(s);b1=new JButton("按钮1");b2=new JButton("按钮2");setLayout(new FlowLayout());add(b1);add(b2);setSize(300,100);setVisible(true);}public static void main(String args[]){ TestButton test;test=new TestButton("测试按钮"); }}程序的运行结果如下:5.阅读下面程序,说明其运行结果和功能。
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);
JAVA考试题库第六章
二 判断题
6-1.异常是一种特殊的运行错误的对象。(对) 6-2.异常处理可以使整个系统更加安全和稳定。(对) 6-3.异常处理是在编译时进行的。(错) 6-4.Java 语言中异常类都是 ng.Throwable 的子类。(对) 6-5.Throwable 类有两个子类:Error 类和 Exception 类。前者由系统保留,后者供应用程序使用。(对) 6-6.异常通常是指 Error 类和 Exception 类。(错) 6-7.Exception 类只有一个子类为 RuntimeException。(错) 6-8.在异常处理中,出现异常和抛出异常是一回事。(错) 6-9.运行时异常是在运行时系统检测并处理的。(错) 6-10.使用 try-catch-finally 语句只能捕获一个异常。(错) 6-11.捕获异常时 try 语句后面通常跟有一个或多个 catch()方法用来处理 try 块内生成的异常事件。(对) 6-12.使用 finally 语句的程序代码为该程序提供一个统一的的出口。(对) 6-13.抛出异常的方法说明中要加关键字 throws,并在该方法中还应添加 throw 语句。(对) 6-14.创建异常类时要给出该异常类的父类。(对) 6-15.如果异常类没有被捕获将会产生不正常的终止。(对) 三 分析程序的输出结果
6-1.Exer6_1.java public class Exer6_1 { public static void main(String args[] )
第六章-数据结构教程(Java语言描述)-李春葆-清华大学出版社
(5)System Call Interface,系统调用接口,向 用户空间提供访问文件系统和硬件设备的统一的
VFS 是底层文件系统的主要组件(接口)。这个组 件导出一组接口,然后将它们抽象到行为可能差 异很大的各个文件系统。VFS具有两个针对文件 系统对象的缓存:inode 索引节点对象和dentry目 录项对象,它们缓存最近使用过的文件系统对象。
文件系统是负责存取和管理文件信息的机 构,用于对数据、文件以及设备的存取控 制,它提供对文件和目录的分层组织形式、 数据缓冲以及对文件存取权限的控制功能。
文件系统具有以下主要功能: 1.对文件存储设备进行管理,分别记录 空闲区和被占用区,以便于用户创建、 修改以及删除文件时对空间的操作。 2.对文件和目录的按名访问、分层组织 功能。 3.创建、删除及修改文件功能。 4.数据保护功能。 5.文件共享功能
};
6.3Part Three
EXT3和EXT4文件系统
6.3.1 EXT3文件系统 EXT3是第三代扩展文件系统(Third extended file system), EXT3是在EXT2基础上增加日志形成的一个日志文件系统,常用 于Linux操作系统。
6.1 Part One
Linux文件系统概述
虚拟文件系统VFS
为了支持多种不同的文件系统,采用了虚拟文件系统
VFS (Virtual File system)技术 。虚拟文件系统是对多 种实际文件系统的共有功能的抽象, 它屏蔽了各种不 同文件系统在实现细节上的差异,为用户程序提供了统
JAVA 06 基础类
• 建议优先采用该类
• 两者的方法基本相同。
Float
Double
valueOf parseXXXX MAX_VALUE & MIN_VALUE
Math
执行基本数学运算所需的方法 所有成员都是静态的
不能实例化
System
提供标准输入/输出、错误输出、获取系统信息等 所有成员都是静态的,不需要实例化
System.in
System.out System.err System.arraycopy(…) System.exit(int)
String
字符串连接 +
子串
substring( beginindex, endindex); 字符串编辑 charAt(index); 测试字符串相等 length();
equals、equalsIgnoreCase
StringBuffer、StringBuilder
String
• 不可变对象
StringBuffer
• 线程安全的可变字符序列
StringBuilder
• 提供了一个与 StringBuffer 兼容的 API,但不保证同步。 • 用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个 线程使用的时候
第6章 基础类
Object
Java中所有的类直接或间接继承于Object equals
• ==
toString
• 对象所属的类名@对象的内存地址
clone
• 接口 Cloneable
包装类
Object
Boolean
Number
ቤተ መጻሕፍቲ ባይዱCharacter
第6章-异常与异常处理
第6章异常和异常处理Java语言作为面向对象的程序设计语言,和其他早期程序设计语言一样,在编写过程中会出现除语法之外的其他错误。
在Java中引进了异常和异常类来进行错误处理。
本章将介绍异常的概念及其异常处理的方法。
6.1 异常处理示例异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦!下面通过一个简单的例子,初步了解就ava中的异常。
【例6-1】运行下列程序,从输出结果中分析出现何种异常。
1 class Excep{2 public int division(int a,int b)3 {4 return a/b;5 }6 }7 class Example6_1{8 public static void main(String[] args){9 Excep excep=new Excep();10 excep.division(5,0);11 }12 }程序运行结果:D:\java\6>javac Example6_1.javaD:\java\6>java Example6_1Exception in thread "main" ng.ArithmeticException: / by zeroat Excep.division(ExcepTest.java:3)at ExcepTest.main(ExcepTest.java:8)程序分析:从程序的输出结果中表明:在main函数中出现了异常错误,但无法预知在哪里出现了异常。
6.2 异常概述任何一个软件程序在运行初期都会产生错误,Java程序也不例外。
例如,内存空间不足,程序控制试图打开一个不存在的文件,网络连接数据中断,数组下标越界等等。
《Java语言程序设计-基础篇》答案-第06章
第6章 类与对象复习题6.1 答: 略6.2答: 略6.3答: 构造方法 ShowErrors(int) 没有定义.原因是默认的构造函数是没有参数的.6.4答: 略6.5答: 变量c 没有初始化,也可以说是没有将对象引用到实例.即c 为null. 6.6 答: 构造函数A()没有定义.原因是类中有了有参的构造方法A(String s),但没有无参构造方法,而系统不会再提供默认的构造函数A()。
系统找不到默认的构造函数.在这种情况下,如果还要用A(),则需要重新定义. 6.7 答:构造函数C(double)没有定义.原因是默认的构造函数是没有参数的. 6.8 答:输出:false;原因是boolean 类型的变量如果没有初始化,则默认初始值为false; 6.9 答:方法x()没有定义;6.10答:略6.11答:略6.12答:输出:1.0;私有变量可以被类里的成员方法访问.6.13答:略6.14答:略6.15答:传递基本类型参数值的变化不能被带回,而引用类型参数的变化可以带回.输出: count is 101 times is 06.16答:After swap1 : circle1= 1.0 circle2=2.0After swap2 : circle1= 2.0 circle2=1.0课后答案网ww w.kh da w .c om6.17答:a[0]= 1 a[1]= 2 (a)a[0]= 2 a[1]= 1 (b)e1 = 2 e2= 1 (c)t1's i = 2 and j= 1 (d)t2's i = 2 and j= 1第四个值得注意,因为 i 为静态的,因此经过二次实例化后,i 就变成2了。
而j 是没有变的,一直为1。
6.18答:System.out .println(f.i);System.out .println(f.s ); f.imethod(); f.smethod ();System.out .println(Foo.s ); Foo.smethod ();但静态成员最好直接用类访问.像 System.out .println(f.s ); f.smethod ();6.19答:i + j is 23k is 2 j is 06.20答:不能在静态方法中调用非静态方法,不能在静态方法中调用非静态变量.反之可以.错误是:不能调用method1(),不能调用c.6.22答:错误没有,但会提出警告:p 不明确,这里应该用this.p;6.23答:第一个输出为:null,因为一个对象的默认值是null,而第二个输出有错,原因是没有将对象引用到实例,即dates[0]为空课后答案网ww w.kh da w .c om。
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
方法说明
绘制组件
重绘组件 设置组件的大小和位置 设置组件可见性 设置鼠标指向组件时的光 标形状。 将变化后的界面显示出来 更新组件
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期末复习题及答案——第六章
JAVA期末复习题及答案——第六章一.填空题1.Java中的异常类对象是Error类或Exception类的对象,这两个类中 Error 类的对象不会被Java的应用程序捕获和抛出。
2.在下列程序的下划线处,填入适当语句使程序能正确执行并输出异常栈信息public class ThrowableException{public static void main(String args[]){try{throw new Throwable(“这是本人定义的异常”);}catch(Throwable e){System.out.println(“e.toString:”+e.toString());System.out.println(“e.printStackTrace():”);System.out.println(e.printStackTrace()) ;}}}二.选择题1.下列关于finally的说法正确的是:BA、如果程序在前面的catch语句中找到了匹配的异常类型,将不执行finally 语句块B、无论程序是否找到匹配的异常类型,都会去执行finally语句块中的内容C、如果在前面的catch语句块中找到了多个匹配的异常类型,将不执行finally 语句块D、只要有catch语句块,任何时候都不会执行finally语句块2.关于多个catch语句块的异常捕获顺序的说法正确的是:DA、父类异常和子类异常同时捕获B、先捕获父类异常C、先捕获子类异常D、依照catch语句块的顺序进行捕获,只能捕获其中的一个3.关于Java 异常,下列说法错误的是(D)A.异常是定义了程序中遇到的非致命的错误,而不是编译时的语法错误B.try……catch语句中对try 内语句监测,如果发生异常,则把异常信息放入对象e 中C.throws 用来表示一个方法有可能抛出异常给上一层,则在调用该方法时必须捕捉异常,否则无法编译通过D.主函数不可以使用 throws 抛出异常4.所有异常的父类是(B)。
第6章 面向对象程序设计
6.2.2 主方法
在程序中,主方法就是程序的入口。程序是一间屋子,主 方法就是屋子的门。在类中,主方法是Main方法,主方 法是由public来进行修饰,其中没有返回值,方法中的参 数是字符串类型的args,一个完整的main方法为。 public static void main(String[] args) {
6.2.6 this关键字
this是Java中的一个关键字,使用this关键字可以不通过 对象引用成员变量和方法。例如去某个公司找领导,不需 要先找他的秘书,现在直接拨打该领导的手机就可以, this关键字就起到了在该例中手机直接通讯的功能。
6.3 对象
在日常生活中,对象可以使任何的物体,例如杯子、桌 子、电冰箱等。一个抽象的事物也可以看做是一个对象, 例如一个想法,它虽然看不见也摸不到,但是可以通过人 类的语言来中,加入主方法,并在主方法中调用 eat和tea方法,就是一个完整的程序了。
6.2.3 构造方法
构造方法是类中比较特殊的一种方法,主要是用于初始化 一些参数,相当于计算器中的“清零”。使用构造方法可 以把所有的数字变量全都设置为0,把所有的布尔类型值 设置为false,把所有的对象变量设置为null。
6.2.4 成员变量
成员变量又称为全局变量,是定义在类中,和类中的方法处 于同一个层次。成员变量相当于在银行中的取号机,银行 中的人都可以对其进行使用。成员变量的语法如下。
变量修饰符 类型 变量名;
6.2.5 局部变量
现在的公司中都有电话,如果公司比较大、部门比较多的 话,设置一个公共的电话也是影响效率的,那样恐怕电话 会一直响个不停,既然电话的成本不高,那就为每一个部 门配置一部电话吧。在程序中,为了解决这个问题,就出 现了局部变量,局部变量只能在方法中使用。
java核心课件2第6章
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程序设计案例教程(第二版)周怡、张英主编。第6章 习题答案
的类可以通过关键字 implements 实现多个接口。
(√)
5.Math 类是 final 类,因此在被其他类继承时其中的方法不能被重,正确的是(A)。
A.类是变量和方法的集合体
B.数组是无序数据的集合
C.抽象类可以实例化
D.类成员数据必须是共有的
2.下面对形参的说法中,正确的是(C)。
4.为什么要将类封装起来?封装的原则是什么? 答:因为封装的类之间互相独立、互不干扰,但可以通过规定的数据接口来进行数据交换,即能 保证数据的安全又能提高类之间相互组合的高效性。
一、将数据和对数据的操作组合起来构成类,类是一个不可分割独立单位。 二、类中既要提供与外部联系的方法,同时又要尽可能隐藏类的实现细节和保护自身数据 的安全性。
3.Java 设置了几种类成员的访问权限?各表示什么含义?
答:(1)公有的(public):说明该类成员可被所有类的对象使用 (2)保护的(protected):说明该类成员能被同一类中的其他成员,或其他子类成员,或同一 包中的其他类访问,不能被其他包的非子类访问。 (3)默认的(缺省):说明该类成员能被同一类中的其他成员,或同一包中的其他类访问,但 不能被其他包的类访问。 (4)私有的(private):说明该类成员只能被同一类中的其他成员访问,不能被其他类的成员 访问,也不能被子类成员访问。
译时多态性。 方法的覆盖:在子类中重定义父类的同名方法。方法覆盖表现为父类与子类之间的方法的
多态性,其中形参表、返回值类型也必须相同,且子类方法不能有比父类方法更严格的访问权 限。可以为编译时多态性或运行时多态性。
6.什么叫构造方法?构造方法的作用是什么?
答:构造方法是对象实例化时完成对象及其成员变量的初始化时所调用的一种特殊的方法。 构造方法的作用是在使用 new 关键字创建类的实例的时候被调用来对实例进行初始化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例6-6
2010-1-10 30
§6.5
Class类
§6.5.1 获取类的有关信息 Class是ng包中的类,该类的实例用来封 装对象运行时的状态。当一个类被加载且创建对象时, 和该类相关的一个类型为Calss的对象就会自动创建。 任何对象调用 getClass()方法 都可以获取和该对象相关的 一个Class对象,这个Class对象调用如下的方法可以获 取创建对象的类的有关信息,比如,类的名字、类中的 方法名称、成员变量的名称等等。
16
NullPointerException
引用空的尚无内存空间的对象 ArithmeticException 算术错误,如除数为0 InterruptedException 一线程在睡眠、等待或其他原因暂停时被其他线程 打断 UnknownHostException 无法确定主机的IP地址 SecurityException 安全性错误,如Applet欲读写文件 MalformedURLException URL格式错误
2010-1-10 11
JDK系统异常类的结构
Object Throwable Error
RuntimeException
其它非运行 异常子类 其它运行异 常子类
Exception
其它子类
不必trycatch它
2010-1-10
必须trycatch它 12
常见RuntimeException
2010-1-10 本类异常一般不用特意处理,只要细心可以避免!
例6-4
2010-1-10
28
§6.3.2 自定义异常类
我们也可以扩展Exception类定义自己的异常 类,然后规定哪些方法产生这样的异常。 一个方法在声明时可以使用throws关键字声明要 产生的若干个异常,并在该方法的方法体中具体 给出产生异常的操作,即用相应的异常类创建对 象,并使用throw关键字抛出该异常对象,导致 该方法结束执行。
2010-1-10
15
异常的分类
1.系统定义异常 系统将常见错误予定义为若干异常类 当出现异常时自动抛出 常见的系统定义的异常类: ClassNotFoundException 未找到要加载的类 ArrayIndexOutOfBoundsException 数组越界使用 FileNotFoundException 未找到指定的文件或目录 IOException 2010-1-10 输入、输出错误
new Computable() { 实现接口的匿名类的类体 }
例6-3
2010-1-10
5
§6.3 异常类 所谓异常就是程序运行时可能出现一些错 误,比如试图打开一个根本不存在的文件等, 异常处理将会改变程序的控制流程,让程序有 机会对错误作出处理。
2010-1-10
6
• 教学目标: 了解传统错误处理和面向对象中的异 常处理的差别,理解异常处理的优越性, 掌握如何在程序中抛出、捕获和处理异 常,了解自定义异常的方法。 • 教学重点: 异常的概念、异常处理的类层次、异 常的产生捕获和处理、自定义异常类 。 • 教学难点: 异常的处理。
2010-1-10 19
通过try、catch、throw、throws和finally等关 键字来实现的。其处理程序的基本结构如下:
try { 正常程序段,可能抛出异常; } catch(异常类1 异常变量) { 捕捉异常类1有关的处理程序段; } catch(异常类2 异常变量) { 捕捉异常类1有关的处理程序段; throw(异常对象实例);//重新抛出此异常 } …… Finally { 退出异常处理程序段; }
2010-1-10 17
用户定义异常
用户自定义异常主要用来处理用户程序中特
定的逻辑运行错误。
2010-1-10
18
异常类的捕获和处理
一、基本概念 1. 异常处理机制:主要体现在“抛出异常"并“捕 获异常"这两个层次。 2. 抛出异常:当程序执行过程中产生异常时,运 行系统将抛出异常类对象(它代表某一异常类 型的错误事件)。 3. 捕获异常:用户程序或运行系统可以捕获该异 常类对象(在函数的调用栈中查找能处理此异 常事件的程序为止)并相应地给出处理的方法 (代码)。 4. 如何捕获异常:采用try、catch、 finally语句块。
2010-1-10 20
在Java程序中,当程序运行过程中发生异常时,采用两 种方式处理异常: 1)由Java异常处理机制的预设处理方法来处理; 2)使用Java语言提供的 try-catch-finally语句自行 处理异常。
2010-1-10
异常处理机制结构
21
try-catch-finally组合语句用来实现抛出异常和捕获异 常的功能。其格式如下: try { statements } catch (ExceptionType1 ExceptionObject) { Exception Handling } catch(ExceptionType2 ExceptionObject) { Exception Handling } … finally { Finally Handling } 2010-1-10
2010-1-10 27
异常的抛出
§6.3.1 try~catch语句
Java使用try~catch语句来处理异常,将可能 出现的异常操作放在try~catch语句的try部分, 将发生异常后的处理放在catch部分。 try~catch语句的格式如下:
try { 包含可能发生异常的语句 } catch(ExceptionSubClass1 e) { … } catch(ExceptionSubClass2 e) { … }
22
其中: (1)try:将可能出现错误的程序代码放在try块中,对 try块中的程序代码进行检查,可能会抛出一个或多个异常。 因此,try后面可跟一个或多个catch。 (2)catch:此功能是捕获异常,参数ExceptionObject 是ExceptionType类的对象,这是由前面的try语句生成的。 ExceptionType是Throwable类中的子类,它指出catch语句 中所处理的异常类型。catch捕获异常的过程中,要将 Throwable类中的异常类型和try语句抛出的异常类型进行 比较,若相同,则在catch中进行处理。 (3)Finally:是这个组合语句的统一出口,一般用来进 行一些"善后"操作,例如释放资源、关闭文件等。它是可 选的部分。
例6-5
2010-1-10
29
§6.4 断言 断言语句用于调试代码阶段。在调试代码阶 段让断言语句发挥作用,这样就可以发现一些 致命的错误,当程序正式运行时就可以关闭断 言语句,但仍把断言语句保留在源代码中,如 果以后应用程又需要调试,可以重新启用断言 语句。 使用关键字assert声明一条断言语句,断言语 句有以下两种格式:
2010-1-10 7
异常处理
一、异常的概念 1.异常: 程序在运行过程中所发生的错误事件(如数组越 界、文件操作时未找到文件、除法溢出等),而这些 错误在设计时不能准确地识别出但又可能会发生 或者不会发生。 2.异常处理 异常处理是指程序获得异常并处理,然后继续程 序的执行。 3.正确理解程序设计中的三种错误:
程序运行结果如图:
2010-1-10
26
1. 系统自动抛出的异常 程序中出现系统中定义的异常时, 可以由系统自动来抛出它。 2. 对于在函数定义时采用throws所声明的 某个异常类型时,在其函数体中必须使 用“throw 异常事件(对象名)" 来抛 出该种类型的异常事件(即程序员自己 抛出程序中定义的自己的异常事件), 以便上一级的调用者来捕获并处理它。
语法错误(编译时的错误); 逻辑错误(运行时的错误); 2010-1-10 异常错误(运行时的错误但取决于执行环境)。
8
异常处理
3. 异常的特点(以“人身保险"为例加以说明异常的特 性) ① 程序在运行过程中所发生的错误事件;
② 程序员在编程时无法预知它是否会产生; ③ 产生与否取决于用户当时的执行环境。
《Java面向对象程序设计》 第6章
内部类与异常类
Power point 制作:耿祥义 张跃平
配合< Java面向对象程序设计>例子源代码一起使用
2010-1-10 1
导读
主要内容 • 内部类 • 匿名类 • 异常类 • 断言 • Class类 难点 • 异常类
2010-1-10
2
§6.1 内部类 Java支持在一个类中声明另一个类,这样 的类称作内部类,而包含Java中的异常处理
它是面向对象方式的错误处理方法。
2010-1-10
9
异常处理机制
当方法执行过程中出现错误而干扰了程序流程时,会 抛出一个异常,即构造出一个异常类的对象。 异常类对象代表当前出现的一个具体异常,该对象封 装了异常的有关信息。 异常分为系统定义异常和用户自定义异常。 异常抛出方式: – 自动抛出(系统定义异常) – 用throw语句抛出(用户定义异常) 方法中的异常处理: – 捕获异常,就地解决,并使程序继续执行 。 – 将异常向外转移,即将异常抛出方法之外,由调用 该方法的环境去处理。
13
常见非运行时异常
本类异常必须处理,我们所指的异常处理就是 针对这样的异常。
2010-1-10
14
Error 虽然我们很细心,但是程序中不免还会出 现各种原因造成程序中断执行。这些错误的产 生原因如:内存不足、线程死锁等,属于系统 等级且非常严重的错误,已经不能称为异常, 所以称为Error。一般的Error主要有: