java学习第8章
Java 2实用教程第5版_第8章-常用实用类

§8.1.1 构造字符串对象
3.引用String常量 String常量是对象,因此可以把String常量的引用赋值给一个String 对象,例如
String s1,s2; s1 = "你好"; s2 = "你好";
s1,s2具有相同的引用(12AB),表达式 s1==s2的值是true,因而具有相同的实体。s1, s2内存示意如图8.3所示。
因此程序可以直接使用String类。 ➢ 需要注意的是Java把String类声明为final类,因此用户不能扩
展String类,即String类不可以有子类。
§8.1.1 构造字符串对象
1.常量对象:字符串常量对象是用双引号括起的字符序列,例如: "你好"、"12.97"、"boy"等。
Java把用户程序中的String常量放入常量池。因为String常量是对象,所 以也有自己的引用和实体,如图8.1所示。例如String常量对象"你好"的
对象变量s中存放着引用,表明自己的实体的位置,即new 运算符首先分配内存空间 并在内存空间中放入字符序列,然后计算出引用。将引用赋值给字符串对象s后, String对象s的内存模型如图8.2所示意(凡是new运算符构造出的对象都不在常量 池)。尽管s和t的实体相同,都是字符序列:we are students,但二者的引用是不同 的(如图8.2所),即表达式s==t的值是false(new运算符如它名字一样。每次都要 开辟新天地)。
仔细阅读例子1,理解程序的输出结果。
public class Example8_1 {
第8章 Java Applet编程

8.5 小
结
• 本章中,对Applet的基础知识,工作原理、生命 周期,以及Applet的部署和基本事件的处理,还 有向Applet传递参数等等作了详细介绍。总的来 说,基于Applet的应用有很多,由于篇幅关系, 这里不再详细介绍,留待读者进一步在实践中去 探索。
8.1.1 Applet的特点
• • • • 应用小程序Applet能够完成以下的工作: (1)Applet能够播放声音; (2)Applet运行在Web浏览器中,它提高了HTML文档的交互性; (3)Applet能够调用在同一页中其他应用小程序的公共(Public) 函数; • (4)Applet可以从本地文件系统中装载(用户在CLASSPATH中定 义的路径),那么从网络装载时所产生的约束将不再适用于这个 Applet; • (5)虽然一旦离开Applet所在的页,大多数Applet将停止运行, 但是这并不是绝对的,通常,大部分Applet具有良好的行为,后 面介绍的stop()函数,目的就在于在编程者离开其所在页时停止 进程的运行,但是,有时候希望让Applet继续运行,例如用户让 Applet执行一个复杂的运算,那么当离开其所在的页时,编程者 希望这个运算能继续进行下去。
第8章 Java Applet编程
• 在这一章中,将介绍Applet网页小应用程序。 Applet网页小应用程序是个面向网络的程序。可 以用来让程序员创建应用程序,并放置在网络服 务器上,而用户可以通过网络下载这些应用程序, 并利用浏览器安全地运行。
8.1 Applet基础知识
• Java Applet小应用程序是一种特殊的Java程序。 这种小程序运行在支持Java的浏览器上,同时也 可以使用JDK所带的appletviewer命令来测试。要 让小程序运行,需要将已经编译好的字节码文件 (.class文件),用特殊标记嵌入到HTML语言编 写的Web页面中。这样,当打开Web页面时,浏览 器会使用内置的Java解释器来运行小程序。
java第八章答案

1.进程和线程有何区别,Java是如何实现多线程的。
答:区别:一个程序至少有一个进程,一个进程至少有一个线程;线程的划分尺度小于进程;进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
Java程序一般是继承Thread 类或者实现 Runnable接口,从而实现多线程。
2.简述线程的生命周期,重点注意线程阻塞的几种情况,以及如何重回就绪状态。
答:线程的声明周期:新建-就绪-(阻塞)-运行--死亡线程阻塞的情况:休眠、进入对象wait池等待、进入对象lock池等待;休眠时间到回到就绪状态;在wait池中获得notify()进入lock池,然后获得锁棋标进入就绪状态。
3.随便选择两个城市作为预选旅游目标。
实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000毫秒以内),哪个先显示完毕,就决定去哪个城市。
分别用Runnable接口和Thread类实现。
(注:两个类,相同一个测试类)//Runnable接口实现的线程runable类public class runnable implements Runnable {private String city;public runnable() {}public runnable(String city) {this.city = city;}public void run() {for (int i = 0; i < 10; i++) {System.out.println(city);try {//休眠1000毫秒。
Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}// Thread类实现的线程thread类public class runnable extends Thread {private String city;public runnable() {}public runnable(String city) {this.city = city;}public void run() {for (int i = 0; i < 10; i++) {System.out.println(city);try {//休眠1000毫秒。
java08(第8章输入输出流)

在java.io包中定义了很多这二个基本类具体实现 包中定义了很多这二个基本类具体实现 输入输出功能的子类, 输入输出功能的子类,表8.1为部分常用字节输入 为部分常用字节输入 流类和字节输出流子类的功能。 流类和字节输出流子类的功能。
表8.1
类 名 FileInputStream 和 FileOutputStream ByteArrayInputStream和 ByteArrayOutputStream ObjectInputStream 和 ObjectOutputStream FilterInputStream 和 FilterOutputStream DataInputStream 和 DataOutputStream BufferedInputStream 和 BufferedOutputStream
【例8-1 】
1. /* 读取文件 */ 2. import java.io.FileInputStream; 3. import javax.swing.JOptionPane; 4. class Example8_1 5. { public static void main( String args[ ]) 6. { byte buffer[ ] = new byte[2056]; 7. String str; 8. try{ 9. File file=new File("d:/jtest/test.dat"); 10. FileInputStream fileInput = new FileInputStream(file); 11. int bytes = fileInput.read( buffer, 0, 2056 ); //读到的字节数 读到的字节数 12. str = new String( buffer, 0, bytes ); 13. } 14. catch(Exception e) 15. { 16. str= e.toString(); 17. } 18. JOptionPane.showMessageDialog(null,str); 19. System.exit(0); //退出程序 退出程序 20. } 21. }
Java编程基础教学之Unit8

while((str=br.readLine())!=null){ System.out.println(str); } br.close(); }catch(MalformedURLException e){ System.out.println("MalformedURLException:"+e); }catch(IOException ioe){ System.out.println("IOException:"+ioe); } } }
将Shift.java编译产生Shift.class,建立HTML文件Shift.html: 设 Shift.claass 与 Shift.html 位 于 当 前 目 录 下 , 执 行 命 令 行 : appletviewer Shift.html
⑴小应用程序在结构上的特点是,每个小应用程序都是 APPLET类的子类,在一般情况下它有init(),start(), paint(),stop(),destroy()等方法。 ⑵方法public void paint (Graphicsg)来显示小应用程序所对应 的窗口和窗口中的内容。 ⑶该方法以类Graphics的对象作为参数。 ⑷类GRAPHICS提供了用以描绘各种基本图形(如,直线、 矩形、字符串等)的方法和对图形剪帖放大的方法。 ⑸在start()方法中用当前对象(this)创建了线程对象(t)。 ⑹t.start()中的start()方法是启动线程的方法而不是启动小应 用程序的方法。
例10.4 在小应用程序中使用线程 本例的程序使用窗口中显示的信息不断的水平移动。 import java. applet.*; import java. awt.Graphics; import java. awt.Font; public class Shift extends Applet implements Runnable{ int x, y, width; Thread t=null; pubic void init(){ width= getSize().width; x=width
java学习第8章

思考,以下程序发生什么异常? 思考,以下程序发生什么异常?
class A { int x; public static void main { A x; System.out.println(x.x); } }
8.2.1 try...catch...finally结构 结构
try { 语句块; 语句块; } catch (异常类名 参变量名 { 异常类名 参变量名) 语句块; 语句块; } finally { 语句块; 语句块; }
} catch ( ArrayIndexOutOfBoundsException e) {
System.out.println("usage: java testException int int "); } } }
8.1.2 异常的类层次
8.1.3 系统定义的异常
系统定义的异常 ClassNotFoundException 异常的解释 未找到要装载的类
8.3.3 方法的异常声明
public static void main(String a[]) throws IOException { char c = (char) System.in.read() ; System.out.println("你输入的字符是:"+ c); 你输入的字符是: 你输入的字符是 }
♣ throw语句和 语句和throws子句的差异性 语句和 子句的差异性 方法名(参数列表) 修饰符 返回类型 方法名(参数列表) throws 异 常类名列表 { ... throw 异常类名; 异常类名; ... } 【注意】 注意】 • 异常是有条件发生的。 异常是有条件发生的。 • 在调用带异常的方法时 • 调用者处理异常 调用者处理异常; • 不处理 在调用者的方法头声明抛出异常。 不处理,在调用者的方法头声明抛出异常 在调用者的方法头声明抛出异常。 • 方法覆盖时,子类方法的 方法覆盖时,子类方法的throws子句中异常不能 子句中异常不能 超出父类的范围。 超出父类的范围。
Java第2版第8章

继承、抽象类和接口
通过本章的学习,主要掌握以下知识点:
类的继承 子类的创建 调用父类中特定的构造方法 在子类中访问父类的成员 覆盖 抽象类 接口 内部类与匿名类 包
本章的重点:
类的继承 覆盖 抽象类 接口本章的难点:内部类与匿名类
8.1 类的继承
类的继承是面向对象程序设计的一个重要特 点,通过继承可以实现代码的复用,被继承的类 称为父类或超类 (superclass) ,由继承而得到的 类称为子类( subclass )。一个父类可以同时拥 有多个子类,但由于 Java 中不支持多重继承,所 以一个类只能有一个直接父类。
}
继承示例
class Student extends Person { //定义Student类,是Person类的子类。 private String department;//系别 private String specialty;//专业 public void studentRegister(String n,String s,int a,String dep,String spe) { //设置数据成员 register(n,s,a); department=dep; specialty=spe; } String getDepartment()//获取学生所在系 { return department; } String getSpecialty()//获取学生所学专业 { return specialty; } public void showStudent()//显示学生类数据成员 { System.out.println("姓名:"+name+",性别:"+sex+",年龄:"+age+",系别 :"+department+",专业:"+specialty); } }
《Java基础入门》_课后习题答案大一计算机专业8

《Java基础入门》课后习题答案第8章GUI(图形用户界面)一、填空题1、在Java 中,图形用户界面简称: GUI2、事件监听器: 负责监听事件源上发生的事件,并对各种事件做出响应处理。
3、GUI 设计提供了一些基本的图形用户接口开发工具,如AWT:Swing 和JavaFX。
4、.如果单击Frame窗口有上角的关闭按相能将其关闭:那么这个Frame窗口添加了:WindowListener 监听器,并实现了监听器:windowClosing(WindowEvent e) 的方法。
5、创建下拉式菜单需要使用三个组件,分别是:JMenuBar、JMenu、JMenuItem二、判断题1、容器(Container)是一个可以包含基本组件和其他容器的组件。
对2.可以通过实现AetionListener 接口或者继承AconAdpter 类来实现动作事件监听器。
错3.CardLayout 布局管理器将界面看做一系列卡片,在任何时候只有其中一张卡片是可见的。
对4.非模态对话框是指用户需要等到处理完对话框后才能继续与其他窗口进行交互。
错5.JFrame 的默认布局管理器是FlowLayout。
错三、选择题1.下面四个组件中哪一个不是JComponent 的子类? (B)A.JButtonB.JDialogC. JLabelD.JMenuBar2.下面四个选项中,哪些是事件处理机制中的角色?(多选) (ABD)A.事件B.事件源C.事件接口D.事件监听器3. ActionEvent 的对象会被传递给以下哪个事件处理器方法? (D)A.addChangeListener()B. addActionListener()C. stateChanged()D. actionPerformed()4.下面哪些是FlowLayout 类中表示对齐方式的常量?(多选) (ABD)A.FlowLayout.LEFTB.FlowLayout.CENTERC. FlowLayout. VERTICALD. FlowLayout. RIGHT5.下列选项中关于JavaFX,描述错误的是(C )A.JavaFX是一个强大的图形和多媒体处理工具包集合B. JavaFX 允许开发者来设计、创建、测试、调试和部署客户端程序C.JavaFX不能与Swing实现互操作D.JavaFX可以实现跨平台功能四、简答题1、请简述GUI 中实现事件监听的步骤:●通过实现XxxListener接口或者继承XxxAdapter类实现一个事件监听器类,并对处理监听动作的方法进行重写●创建事件源对象和事件监听器对象●调用事件源的addXxxLisntener()方法,为事件源注册事件监听器对象2、请简述Swing 中的布局管理器有哪些。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例8-2 算术异常测试举例
public class testSystemException { public static void main(String a[]) { try {
int x=4/0;
System.out.println("come here? "); } catch (ArithmeticException e) { System.out.println("算术运算异常!"+e.toString()); 算术运算异常! 算术运算异常 } finally { System.out.println("you must go here"); } }}
处理方法1: 处理方法 :用传统的防错处理办法检测输入 参数是否达到2个,未达到给出提示。 参数是否达到 个 未达到给出提示。
public class testException { public static void main(String args[]) { if (args.length<2) { System.out.println("usage: java testException int int "); } else { int x=Integer.parseInt(args[0]); int y=Integer.parseInt(args[1]); System.out.println("x+y="+(x+y)); } } }
while(true) { try { index = br.readLine(); if(index.equals("end")) break; index1=Integer.parseInt(index); System.out.println("元素值为:" + arr[index1]); 元素值为: 元素值为 } catch(ArrayIndexOutOfBoundsException a) { System.out.println("数组下标出界 数组下标出界"); 数组下标出界 } catch(NumberFormatException n) { System.out.println("请输入一个整数 请输入一个整数"); 请输入一个整数 } catch(IOException e) { } } }}
异常处理
♣ 思考与练习
class E1 extends Exception { } class E2 extends E1 { } class TestParent { public void fun(boolean f) throws E1 { } } public class Test extends TestParent { //---X— } 下面哪些方法可以放在—X—位置并通过编译。 位置并通过编译。 下面哪些方法可以放在 位置并通过编译 A. public void fun(boolean f) throws E1 { } . B. public void fun(boolean f) { } . C. public void fun(boolean f) throws E2 { } . D. public void fun(boolean f) throws E1,E2 { } . E. public void fun(boolean f) throws Exception { } .
异常处理
♣写出下面程序运行结果 写出下面程序运行结果
public class ex2{ public static void main(String args[]){ String str = null; try { if (str.length() == 0) System.out.print("The"); System.out.print(" Cow"); } catch (Exception e) { System.out.print(" and"); System.exit(0); } finally { System.out.print(" Chicken"); } System.out.println(" show"); } }
(1)正常运行示例: )正常运行示例: java testException 23 45 输出结果: 输出结果: x+y=68 (2)错误运行现象 ,忘记输入命令行参数 )错误运行现象1, 例如: 例如:java testException 则在控制台将显示数组访问越界的错误信息: 则在控制台将显示数组访问越界的错误信息: Exception in thread "main" ng.ArrayIndexOutOfBoundsException: 0 at testException.main(testException.java:3)
(3)错误运行现象 ,输入的命令行参数不是整数 )错误运行现象2, 例如: 例如:java testException 3 3.4 则在控制台将显示数字格式错误的异常信息: 则在控制台将显示数字格式错误的异常信息: Exception in thread "main" ng.NumberFormatException: For input string: "3.4" at ng.NumberFormatException.forInputStrin g(NumberFormat Exception.java:48) at ng.Integer.parseInt(Integer.java:435) at ng.Integer.parseInt(Integer.java:476)
异常处理
8.3.2 抛出异常
public class TestException { public static void main(String a[]) { try { throw new MyException("一个测试异常 一个测试异常"); 一个测试异常 } catch (MyException e) { System.out.println(e); } } }
几点说明: 几点说明: 可以引导多个catch块。 (1)一个 可以引导多个 )一个try可以引导多个 块 块中的剩余语句将不再执行。 (2)异常发生后,try块中的剩余语句将不再执行。 )异常发生后, 块中的剩余语句将不再执行 块中的代码要执行的条件是, (3)catch块中的代码要执行的条件是,首先在 块 ) 块中的代码要执行的条件是 首先在try块 中发生了异常,其次异常的类型与catch要捕捉的一 中发生了异常,其次异常的类型与 要捕捉的一 致。 部分, (4)可以无 )可以无finally部分,但如果存在,则无论异常发 部分 但如果存在, 生否, 部分的语句均要执行。 生否,finally部分的语句均要执行。即便是 或 部分的语句均要执行 即便是try或 catch块中含有退出方法的语句 块中含有退出方法的语句return,也不能阻止 块中含有退出方法的语句 , finally代码块的执行 除非执行 代码块的执行;除非执行 代码块的执行 除非执行System.exit(0)等导致 等导致 程序停止运行的语句。 程序停止运行的语句。
8.3.3 方法的异常声明
public static void main(String a[]) throws IOException { char c = (char) System.in.read() ; System.out.println("你输入的字符是:"+ c); 你输入的字符是: 你输入的字符是 }
8.2.2 多异常的处理举例
import java.io.*; public class multiException { public static void main(String args[]) { int arr[] = {100,200,300,400,500,600}; String index; int index1; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("输入序号(输入 输入序号( 输入序号 输入end 结 ):"); 束):
第8章 异常处理 章
5.1 5.2 5.3 异常的概念 异常处理 自定义异常
8.1.1 什么是异常
• 异常指的是程序运行时出现的非正常情况 例8-1 测试异常 public class testException { public static void main(String args[]) { int x=Integer.parseInt(args[0]); int y=Integer.parseInt(args[1]); System.out.println("x+y="+(x+y)); } }
ArrayIndexOutOfBoundsExce 数组访问越界 ption FileNotFoundException IOException NullPointerException ArithmeticException NumberFormatException InterruptedException 文件找不到 输入、输出错误 空指针访问 算术运算错误,如除数为0 数字格式错误 中断异常,线程在进行暂停处 理时(如:睡眠)被调度打 断将引发该异常。
处理方法2:利用异常机制,以下为具体代码。 处理方法 :利用异常机制,以下为具体代码。
public class testException { public static void main(String args[]) { try { int x=Integer.parseInt(args[0]); int y=Integer.parseInt(args[1]); System.out.println("x+y="+(x+y));