Java复习.docx_第1页
Java复习.docx_第2页
Java复习.docx_第3页
Java复习.docx_第4页
Java复习.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章 Java概述本章教学内容及要求如下: 了解Java语言特点,理解Application和Applet两种Java应用程序的运行原理和方法,理解由Java虚拟机支持的程序运行机制。 掌握在JDK环境中编译和运行程序的操作,熟悉在MyEclipse集成开发环境中编辑、编译、运行和调试程序的操作。重点:掌握在JDK和MyEclipse环境中编译和运行Java Application应用程序的操作。1.1 了解Java1.1 Java具有哪些适合在Internet环境中运行的特点?【答】平台无关性、完全面向对象和简单性、可靠性、安全性、多线程、支持分布式网络应用等。1.2 什么是平台无关性?Java怎样实现平台无关性?【答】平台无关性是指一个应用程序能够运行于不同的操作系统平台。Java采用虚拟机技术支持平台无关性,不同的操作系统上运行不同版本的Java虚拟机。1.2 Java应用及其运行方式1.3 Java源程序文件编译后生成什么文件?程序的运行机制是怎样的? 【答】Java将源程序文件(*.java)中的每个类编译生成一个字节码文件(.class),由Java虚拟机解释执行字节码文件。1.4 Java应用程序有哪两种形式?它们的运行方式有什么不同?【答】Java应用程序有两种:Application和Applet。Application是能够独立运行的应用程序,有控制台和图形用户界面两种运行方式。Applet是可以嵌入Web页面的最小应用,它不能独立运行,必须嵌入超文本(*.html)中,由浏览器中的Java解释器解释执行。1.3 JDK1.5 环境变量path和classpath的作用分别是什么?【答】path提供可执行文件(.exe)的路径;classpath提供类文件(.class)的路径。1.6 什么是包?为什么需要包机制?【答】包(package)是类的集合。包是Java区别类名字空间的机制。一个包中的多个类之间不能重名,不同包中的类名则可以相同。1.7 Java对源程序文件中的声明语句及文件其命名规则有什么要求?【答】在一个Java源程序文件(*.java)中,可以使用package语句声明包,使用import语句导入包,之后使用class或interface声明多个类或接口。其中,声明为public权限的类或接口只能有一个,且文件名必须与该类名相同。第2章 Java语言基础本章教学内容及要求如下: 掌握Java语言的基本语法成分,包括标识符与关键字、数据类型、运算符、表达式、变量声明等语言成分,掌握分支、循环等流程控制语句的语法和使用。特别注意与C/C+的不同之处。 掌握数组类型的声明和动态内存申请,掌握以基本数据类型和类的两种方式声明和使用字符串。 掌握Java语言的方法声明和调用规则,掌握基本类型和引用类型作为方法参数和返回值的传递规则。重点:数组的引用模型;使用静态方法,引用类型作为方法的参数和返回值。2.1 语言成分1. 数据类型、变量及运算2.1 Java语言的基本数据类型有哪些?引用数据类型有哪些?【答】基本数据类型有:整数类型byte、short、int、long,浮点数类型float、double,字符类型char,布尔类型boolean;引用数据类型包括数组(array)、类(class)和接口(interface)。2.2 与C+语言相比,Java语言的常量如何声明?【答】Java使用final关键字声明最终变量。2. 字符类型运算2.3 表达式a+1的运算结果是_,(char)(a+1)的运算结果是_。【答】98,b解释char也是数值类型,可将char看成是2字节无符号整数,范围是065535。1是int类型,4字节。a+1进行的是算术运算,操作数的数据类型相容,结果取较长的int数据类型,a+1运算含义为将a的ASCII码97加1。(char)(a+1)将98强制转换成char类型,结果为b。2.4 设char ch1=108, ch2=73;,以下语句有什么错误?如何改正? ch1=ch1+ch2; 【答】编译错,不能将int转换成char。改正如下:ch1=(char)(ch1+ch2);解释与byte和short类型存储和运算原理相同,char也是以int存储和运算的,在065535范围内的整数可看成一个Unicode字符的编码,因此能够以字符显示。两个char作为数值参加算术运算时,仍然是int类型运算,运算结果是int类型。所以,不能赋值给char变量。2.2 流程控制语句2.5 指出下列程序段中的错误以及出错原因。int s=0;for (int i=0; i10; i+) s+=i;i+;【答】最后一句产生编译错。变量i的作用域在for语句中,在for语句之外则不能使用。2.6 下列程序段希望用for语句求出1n累加和并显示,请问程序有错误吗?错在哪里?输出结果i和s的值分别是多少?int i=1, n=10, s=0;for (i=1; i=n; i+); s += i;System.out.println(Sum = 1+.+n+ = +s);【答】没有编译错和运行错,运行结果如下,有逻辑错,循环体为空语句,多了分号。Sum = 1+.+10 = 112.3 数组1. 一维数组2.7 与C+的数组相比,Java的数组做了哪些改进?具有怎样的优越性?【答】 Java数组都是动态数组,在声明数组变量之后,使用new运算符申请数组存储空间。 提供length属性表示数组长度。 Java的数组是引用数据类型,两个数组变量之间的赋值是引用赋值,传递地址等引用特性,没有申请新的存储空间。 Java将严格检查数组元素下标范围,程序运行时,如果ai的下标i取值超出0a.length-1范围,则作为错误处理,产生“数组下标越界”异常,程序运行终止。 数组名不作指针使用。2.8 以下数组声明错误的是_。(A)int a; (B)int a3; (C)int a=1,2,3; (D)int a=new int3;【答】B解释Java数组是动态数组,声明数组变量时不需要接线指定数组长度,只有使用new运算符申请数组存储空间时才需要指定数组长度。2.9 设int a=new int5, b=a; 执行语句b0=99;后,a中各元素值为_。【答】99,0,0,0,0解释Java的数组是引用数据类型,两个数组变量之间的赋值是引用赋值,即两个数组变量引用同一个数组,修改其中某一元素将同时改变另一数组变量的相应元素,如图2.5所示。图2.5 数组的引用模型2. 二维数组2.10 画出下列程序段表示mat存储结构示意图,并写出其中数据。int n=5, k=1;int mat =new int n;for (int i=0; in; i+) mati=new int n-i; for (int j=0; j=d2?+(d1=d2);【答】不能使用=运算符比较对象大小。2. 对象的引用模型3.6 作为引用数据类型,对象在赋值和方法的参数传递方面与基本数据类型的变量有什么不同?3.7 阅读下列程序,程序运行结果是什么?说明为什么是这样的结果。public class Person1 String name; public Person1(String name) = name; public static void main(String args) Person1 p1 = new Person1(李小明); Person1 p2 = p1; = 王小伟; System.out.println(); 【答】王小伟。两个对象引用同一个实例。3.2 类的封装性3.8 什么是封装?为什么要将类封装起来?封装的原则是什么?有哪些封装手段?2. 构造方法和析构方法3.9 下列MyDate类构造方法声明有什么错误?public MyDate(int year, int month, int day=1) 【答】Java不支持在方法声明时为参数指定默认值。【习3.5】 默认构造方法及重载构造方法的必要性。 当一个类没有声明构造方法时,Java自动为该类生成一个默认的构造方法,默认构造方法无参数。例如:public class Person2 String name; int age; public static void main(String args) Person2 p = new Person2(); /正确 System.out.println(+, +p.age+岁); 程序运行结果如下:null, 0岁 当一个类声明了有参数的构造方法时,Java不再自动为该类生成一个无参数的构造方法。例如:public class Person3 private String name; private int age; public Person3(String name,int age) = name; this.age = age; public static void main(String args) Person3 p = new Person3(李小明,21); /正确/ Person3 p = new Person3(); /编译错误,未声明构造方法 所以,一个类必须声明多个重载的构造方法。例如,public class Person4 private String name; private int age; public Person4(String name,int age) = name; this.age = age; public Person4() this(,0); public static void main(String args) Person4 p1 = new Person4(李小明,21); /正确 Person4 p2 = new Person4(); /正确 3. 访问控制3.10 Java的类有几种访问权限?类中成员有几种访问权限?分别使用什么关键字表示?可访问范围是什么?【答】4种,公有public,可被所有类访问;保护protected,可被同一包及包外所有子类访问;缺省,可被当前包中所有类访问;私有private,只能被当前类访问。3.11 下列声明有什么语法错误?private class MyDate 【答】声明一个类可使用的权限修饰符只有public和缺省两种,不能使用protected和private。3.12 如果MyDate类的成员变量声明如下,将会产生什么错误?public class MyDate public int year, month, day; 4. 静态成员3.13 static关键字用于声明哪些成员?这些成员有什么特性?【答】3.14 main()方法为什么要用static声明?【答】因为main()方法是属于类的,在创建实例之前,就由Java虚拟机调用。3.3 类的继承性1. 继承概念3.15 什么是继承?继承机制的作用是什么?子类继承了父类中的什么?子类不需要父类的数据域或方法时怎么办?能够删除它们吗?Java允许一个类有多个父类吗?3.16 子类能够访问父类中什么样权限的成员?3.17 如果子类声明的成员与父类成员同名会怎样?2. Object类3.18 Java声明Object类的作用是什么?Object类中声明了哪些方法?Object类在Java类层次体系中的地位是怎样的?【答】Object类声明所有类共用的方法,方法有equals()、toString()等。根类。3.19 new Person() instanceof Object运算结果是_,理由是_。【答】true,任何类都是Object的子类,子类对象即是父类对象。3.4 类的多态性3.20 什么是多态性?什么是方法的重载?方法的重载和覆盖有何区别?3.21 在什么情况下需要使用super?举例说明。3.22 什么是运行时多态?方法的重载和覆盖分别在什么时候能够确定调用多态方法中的哪一个?为什么?3.5 类的抽象性1. 抽象类3.23 什么是抽象类?在什么情况下需要设计抽象类?抽象类中是否必须有抽象方法?【答】使用关键字abstract声明的类称为抽象类,抽象类通常包含抽象方法,抽象方法是只有方法声明而没有方法体的成员方法,抽象类不能被实例化。3.24 以下Shape类声明有什么错误?能否创建Shape对象?public abstract class Shape public Shape() public double area() return 0; public void print() public void finalize() 【答】没有错误,抽象类也可以不包含抽象方法,不能创建抽象类的对象。class Shape_ex public static void main(String args) Shape s1 = new Shape(); /编译错,Shape1 is abstract; cannot be instantiated s1.print(); 3.25 如果ClosedFigure类中的area()方法声明如下,会对ClosedFigure的子类有何影响?public class ClosedFigure public double area() return 0; 【答】此处ClosedFigure类的area()方法没有意义。因为ClosedFigure的子类不是必须覆盖area()方法,如果没有覆盖,无论是什么对象,则图形面积总为0.0。将area()方法声明为抽象方法,在编译时Java会自动检查子类是否覆盖了抽象方法。如果一个方法需要被子类覆盖,则必须声明为抽象方法。2. 最终类3.26 采用final声明java.lang.Math类的目的是_。【答】Math类不能被继承,其中的成员方法不能被覆盖。3.27 什么是最终类?在什么情况下需要设计最终类?最终类中是否必须有最终方法?【答】使用关键字final声明的类称为最终类,最终类不能被继承。第4章 接口、内部类和Java API基础本章教学内容及要求如下: 理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口、一个类实现多个接口的声明和使用方法。 理解内嵌类型的概念,掌握声明内部类的方法。 熟悉Java语言包和实用包中的常用类。重点:接口和实现接口的类;Java API。难点:接口,内部类,Java API。4.1 接口4.1 什么是接口?接口的作用是什么?【答】接口是一组抽象方法、常量和内嵌类型的集合。接口提供方法声明与方法实现相分离的机制,使实现接口的多个类表现出共同的行为能力。4.2 接口能否被实例化?为什么?接口中能否写构造方法?为什么? 【答】接口不能被实例化,因为接口是声明的是抽象方法,没有方法体。接口中不能写构造方法,因为构造方法不能声明为抽象方法。4.3 接口对象引用谁的实例?【答】接口是引用类型,接口对象引用实现该接口的类的实例。4.4 指出以下声明中的错误。 protected interface Area public static int left; public static final int RIGHT; public Area() private double area(); public static abstract double perimeter(); new Area() 【答】protected interface Area /编译错,不能声明接口为保护的 public static int left; /编译错,接口不能声明成员变量 public static final int RIGHT; /编译错,接口声明的最终变量必须赋值 public Area() /编译错,接口不能声明构造方法 private double area(); /编译错,不能声明私有方法 public static abstract double perimeter(); /编译错,接口不能声明静态方法new Area() /编译错,接口不能被实例化4.5 说明接口与抽象类的区别。【答】相同点: 两者都包含抽象方法,约定多个类共用方法的参数列表和返回值。 两者都不能被实例化。 两者都是引用数据类型,其变量可被赋值为子类或实现接口类的对象。 不同点: 抽象类约定多个子类之间共用的方法;接口约定多个互不相关类之间共用的方法。 抽象类与子类之间采用单继承机制;一个类实现多个接口则实现了多重继承的功能。接口是多重继承的,一个接口可以继承多个父接口。 抽象类及其类中成员具有与普通类一样的访问权限;接口和接口中成员的访问权限只有public和默认两种。 抽象类中可以包含非抽象方法,也可以声明构造方法;接口中的方法全部是抽象方法,不能声明构造方法。 抽象类中可以声明成员变量,子类可以对该成员变量赋值;接口中只能声明常量。 4.6 举例说明Java声明了哪些接口,各起什么作用。【答】Java声明java.lang.Comparable可比较接口和java.util.Comparator,约定对象比较大小的规则;java.awt.ActionListener等事件监听器接口,约定指定事件的事件处理方法;java.lang.Runnable接口约定线程执行的操作;java.io.FileFilter文件过滤器接口,约定文件过滤规则。4.3 java.lang包中的基础类库4.7 Java API采用什么组织方式?默认导入的包是什么?【答】Java API采用包组织类。默认导入的包是java.lang。4.8 Java为什么要将Math类声明为最终类?Math类中有哪些常用方法?【答】不能被其他类继承,使得其中方法不会被覆盖而修改。方法有abs()、max()、sin()、cos()、sqrt()等。第5章 异常处理本章教学内容及要求如下: 发现各种程序错误,采取不同的手段排除错误。 理解异常处理机制的运行方式,掌握Java异常的抛出、捕获及处理方法。 熟悉自定义异常在程序设计中的作用。重点:掌握try语句捕获异常并处理。难点:捕获并处理异常,抛出异常、使异常在方法间传递。5.1 异常处理基础5.1 Java为什么要采用异常处理机制?Java的异常处理是怎样实现的?异常处理机制能够解决程序中遇到的所有错误吗?哪些错误不是异常处理能够解决的?5.2 哪些异常是应该避免而不捕获的?哪些异常是必须处理的?举例说明,至少三种异常。5.3 为什么将字符串转换成数值类型时会抛出异常?抛出什么异常?如果将数值转换成字符串?会抛出异常吗?5.4 以下语句将产生什么异常?String str=;char ch=str.charAt(0);【答】字符串序号越界异常StringIndexOutOfBoundsException5.5 执行以下语句,产生的异常对象被谁捕获? try int i = Integer.parseInt(123a); catch (Exception e) catch (NumberFormatException e) 【答】被catch (Exception e) 子句捕获。5.2 异常处理措施5.6 关键字throw和throws分别表示什么含义?两者有何差别?第6章 图形用户界面本章教学内容及要求如下: 掌握Java Swing组件的使用方法,包括窗口、框架、对话框、面板、文本编辑框、按钮、组合框等,掌握多种布局方式,掌握窗口菜单和快捷菜单设计方式。 理解委托事件处理模型,掌握不同组件、不同事件的事件处理方法,设计出能够响应事件的Java图形用户界面。 熟悉在组件上绘图的方法。重点:组件,布局,事件处理,异常处理。难点:组件量大,方法众多;采用接口实现的委托事件处理模型。6.1 AWT组件及其属性类6.1 什么是组件?什么是容器组件?它有什么特点?Java提供了哪些容器组件?【答】组件是具有可视界面的类,是图形用户界面的基本组成单位。容器是能够容纳其他组件的组件。容器有布局特性。Java提供的容器组件有窗口和面板。6.2 窗口与面板有什么不同?【答】窗口和面板是两种容器,窗口是顶层容器,可独立运行;面板必须包含在其他容器中,且不能独立运行。窗口有标题栏和关闭控制按钮,有边框,可添加菜单栏;面板什么都没有。6.3 框架与对话框有什么不同?【答】框架和对话框是两种窗口,框架作为Java Application应用程序的主窗口使用;对话框不能作为应用程序的主窗口,只在需要时弹出,用于显示一个消息等。6.4 Java的布局方式有什么特点?Java提供了哪些布局方式?【答】Java采用相对布局方式。java.awt包中有FlowLayout流、BorderLayout边、GridLayout网格、CardLayout卡片、GridBagLayout网格包等布局管理器;javax.swing包中有BoxLayout盒式布局。6.2 事件处理6.5 什么是事件?事件由谁产生? 【答】在图形用户界面的应用程序中,事件指产生一项动作,或者改变一个状态。事件可由用户操作触发,或操作系统控制触发。6.6 说明Java的委托事件模型。【答】Java将事件封装成事件类,为每个事件类定义一个事件监听器接口,其中约定事件处理方法声明,指定产生事件时执行的操作。例如,单击事件类ActionEvent相应的单击事件监听器接口ActionListener中约定actionPerformed()方法声明;一个类如果要响应单击事件,它就必须声明实现ActionListener监听器接口,给出actionPerformed()方法实现。这是Java和程序员的约定,当产生单击事件时,Java虚拟机执行由程序员书写的actionPerformed()方法。 一个类既可以在自己类中写指定事件处理方法,也可以委托其他类处理指定事件,即将某事件处理方法写在其他类中,再创建该类实例调用。6.7 为什么事件处理模型需要采用接口实现?【答】因为事件处理方法将由Java虚拟机执行,因此,Java必须约定有哪些事件,以及当产生某个事件时,执行哪个方法。Java约定了事件类,以及各事件的事件处理方法。而事件处理方法中将执行什么操作,每个程序需求不同,这由程序员决定。所以,事件处理方法声明和实现必须是分离的,必须采用接口。第7章 多线程本章教学内容及要求如下: 理解进程与线程概念,掌握创建、管理和控制Java线程对象的方法,包括创建Java线程对象、改变线程状态、设置线程优先级以控制线程调度等方法。 了解并发执行的多线程间存在的各种关系,掌握实现线程互斥和线程同步方法。重点:创建Java线程对象,改变线程状态,设置线程优先级以控制线程调度。难点:线程互斥,线程同步。 7.2 Java的线程对象1. Runnable接口与Thread类7.1 Java提供了哪些接口和类实现多线程机制?各有什么作用?怎样启动一个线程?【答】Runnable接口与Thread类,Runnable接口声明run()方法,约定线程的执行方法;Thread类提供线程实例。调用Thread类的start()可启动一个线程。7.2 以下线程启动后时执行什么方法?操作结果是什么?为什么?new Thread().start();【答】执行Thread类声明的run()方法,该方法体为空,所以没有操作结果。7.3 设有A、B类声明如下,说明怎样使用这些实例创建、启动线程并执行有效操作?public class A extends Thread /继承Thread线程类public class B implements Runnable /实现Runnable接口【答】 A类必须声明覆盖Thread类的run()方法,为线程对象提供非空的操作方法。 B类实例只能用作线程的目标对象,用于创建线程对象的参数,例如:new Thread(new B().start();2. 线程对象的生命周期7.4 Java线程对象的生命周期有哪几种状态构成?各状态之间是如何变化的?【答】Thread.State类声明线程的五种状态是:新建态NEW、运行态RUNNABLE、阻塞态BLOCKED、等待态WAITING和TIMED_WAITING、终止态TERMINATED,各状态的变化见教材图7.4。7.5 Thread类中有哪些方法能够改变线程对象的状态?各由什么状态改变到什么状态?【答】Thread类中改变和判断线程状态的方法有:线程启动、线程睡眠、线程中断等。线程启动start()方法将NEW新建态的线程改变成运行态RUNNABLE;线程睡眠sleep()方法将当前线程由运行态进入等待态;线程中断interrupt()方法对当前线程设置运行中断标记。7.3 线程的同步机制7.6 什么是交互线程?什么是线程互斥与同步?说明线程互斥与同步机制怎样保证交互线程对共享变量操作的正确性,不产生与时间有关的错误。【答】共享变量的多个线程之间称为交互线程,它们执行时将因竞争共享变量的使用权而影响其他线程的运行结果,可能产生与时间有关的错误。交互线程之间存在竞争和协作两种关系。线程互斥指,采用加锁方式使若干交互线程串行地使用同一共享资源,它是解决线程间竞争关系的手段。线程同步指,两个以上线程基于某个条件来协调它们的活动。一个线程的执行依赖于另一个协作线程的信号,当一个线程没有得到来自于另一个线程的信号时则需等待,直到信号到达才被唤醒。线程同步是解决线程间协作关系的手段。第8章 Applet应用程序本章教学内容及要求如下: 理解Web应用的基础知识,熟悉HTML语言及其中的Applet标签。 掌握Applet应用程序的设计方法,理解Applet应用程序的运行方式和生命周期,理解Applet的各种状态及变化条件,熟练使用与Applet状态改变有关的方法实现对Applet的控制。 熟悉Applet支持的多媒体和动态网页技术,包括绘制图形、显示图像、播放音频文件等。熟练使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论