javase程序设计课后题答案

时间:2023-03-09 08:10:40
javase程序设计课后题答案

;第1章 Java概述

  1. 编译java application源程序文件将产生相应的字节码文件,这些字节码文件别的扩展名为.java
  2. 执行一个java程序fristapp的方法是运行java fristapp
  3. main()方法的返回类型是void
  4. 在java代码中,public static void main方法的参数描述正确的是string args【】,string【】args
  5. 内存的回收程序负责释放无用内存  √
  6. java体系主要分为java ME,Java SE,JavaEE三大块

第2章 Java基础

  1. Java语言中,下列标识符错误的是  40name  
  2. java变量中,以下不属于引用类型的数据类型是字符型
  3. double d=5.3E12  ×
  4. C
  5. A
  6. for循环的一般形式为;for(初值;终值;增量),以下对for循环的叙述,正确的是初值和增量都是赋值语句,终值是条件判断语句
  7. 当输入下面选项中3值时,将会输出default
  8. 下面哪种方法能够支持javadoc命令/**…*/
  9. 下面声明一个string类型的数组正确的是string str[]
  10. 下面定义一个整型数组,不合法的是int[][]array=new int[][4];
  11. 给定代码;。。。。。下面叙述正确的是输出的结果为:0
  12. java语言规定,标示符只能由字母,数字 美元符$和下划线租成,并且第一个字符不能是数字;java是区分大小写的。
  13. 表达式1/2*3的计算结果是0;设x=2,则表达式(x++)/3的值是0
  14. 数组的长度可以用其属性length获得;创建一个数组对象可以使用new关键字创建

第3章 面向对象基础

  1. 在java中引用对象变量和对象间有什么关系?引用变量是指向对象的一个指针
  2. 对象是面向对象技术的核心所在,在面向对象程序设计中,对象是累的抽象 ×
  3. 构造方法何时被调用?创建对象时
  4. A,B,D
  5. 在java语言中在包p1中包含包p2,类A直接隶属于p1,类B直接隶属于包p2.在类c中要使用类a的方法和类b的方法b,需要选择import p1.*; import p1.p2,*;
  6. java中,访问修饰符限制最高的是private

第4章 类之间的关系

  1. 在java中,下面关于类的描述正确的是一个父类可以有多个子类
  2. 在java语言中,类worker是类person的子类,worker的构造方法中有一句“super()”,该语句是调用person的构造法法
  3. 下列final修饰符不允许父类被继承。
  4. 在java中,在类中定义两个或多个方法,方法名相同而参数不同,这称为方法重载
  5. Derived derived=new Base():×
  6. public  void  method_1(int e,int f)√

第5章 抽象类、接口和内部类

  1. 下列abstract修饰符用来定义抽象类
  2. final类不但可以用来派生子类,也可以用来创建final类的对象
  3. 有错误,Mine必须声明成abstract的
  4. Throwable类是下面那两个类的直接父类Error,Exception
  5. Object类是Throwable类的父类
  6. NullPointerException属于非检查型异常的类
  7. 用于方法声明抛出异常类型的关键字是throws
  8. throws关键字用来表明一个方法可能抛出的各种异常
  9. 能单独和finally语句一起使用的快是try
  10. 可以使用return关键词跳出来一个try快而进入finally块
  11. B,C,D
  12. 下列类在多重catch中同时使用时,Exception异常类应该最后列出

第6章 异常

第7章 泛型和集合

  1. D
  2. 下面不是继承自Collection接口的是HashMap
  3. 下面用于创建动态数组的集合类是ArraryList
  4. 向ArraryList对象中添加一个元素的方法是 addObject o
  5. List myList=new ArrayList()√

第8章 流与文件

  1. 改变当前目录,返回父目录的名称,删除文件属于File类的功能
  2. 当编译上述代码的的时候出现一个编译错误
  3. 下列类中由InputStream类直接派生出的是ObjectInputStream
  4. void flush()方法不是InputStream的方法
  5. 下列InputStream类可以作为FilterInputStream的构造方法的参数

第9章  JDBC

  1. 以下代码行的功能是MS-SQL服务器数据库加载驱动程序
  2. 为维护不同数据库所创建的驱动器列表,使用JDBC-ODBC桥接
  3. C

 

第10章 Swing

  1. Swing组件位于javax.swing包中
  2. 下面流布局布局管理是居中放置组件,当同一行超出容器宽度后才会从新行开始放置组件。
  3. 使用边界布局管理器时,中间区域会自动垂直调整大小,而不在水平方向上调整
  4. 利用边界布局,向容器中添加一个组件,其中容器用cont表示,组件用comp表示,书写代码的方式是cont.add(comp,BorderLayout.CENTER);
  5. 窗体和面板容器默认布局分别是边界布局,流布局
  6. 下面不是容器组件的是JList
  7. 下面代码中,设置容器的布局 为空的正确语句是setLayoutnull
  8. JButton的父类是AbstractButton
  9. 事件监听接口中的方法的返回值是void
  10. 在java中,要处理Button类对象的事件,以下ActionListener是可以处理这个事件的借口。
  11. 要判断关闭窗口的事件,应该添加窗口监听器
  12. “按钮被单击”
  13. 下面getSource()用于获取事件源

 

第11章 Swing(2)

  1. 用于创建菜单项的类是JMenuItem
  2. 下面选项中,用于显示确认对话框的方法是showConfirmDialog
  3. 下面JTree组件用于以层次结构显示数据
  4. A
  5. A
  6. 用于文件打开或保存时显示的对话框类是JFileChooser,该类中的showOpenDialog方法用于显示一个文件打开对话框,showSaveDialog方法用于显示一个文件保存对话框
  7. JColorChooser类是颜色选择器

第12章 线程

  1. 下面Thread是线程类
  2. 要建立一个线程,可以从下面Runnable接口继承
  3. 下面让线程休眠1分钟正确的方法是sleep60000
  4. 列举让线程处于不运行的状态的方法sleep(),wait(),yield()
  5. 线程同步的关键字synchronized

问答部分

第一章

1、简单列举Java语言的特点?

答:(1)简单性(2)面向对象性(3)分布式(4)健壮性(5)跨平台性(6)高性能(7)多线程(8)动态性

2、Java应用程序分为几类?各有什么特点?

答:两类:Applications(Java应用程序)和Applet(Java小程序)

特点:Applications是指在计算机操作系统中运行的程序。使用Java创建应用程序与使用其他任何计算机语言相似,这些应用程序可以基于GUI或命令行界面。Applet是为在Internet上工作才创建的Java小程序,通过支持Java的浏览器运行,Applet可以使用任何Java开发工具创建,但必须被包含或嵌入到网页中,当网页显示浏览器上后,Applet就被加载并执行。

3、面向对象的特征有哪些方面,并分别简要解释。

答:(1)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念。

(2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

(3)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。

(4)多态:多态性是指允许不同类的对象对同一消息作出响应。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

4、简述JVMJREJDK的概念及三者关系。

答:(1)JVM(Java虚拟机)是可运行Java字节码(.class文件)的虚拟计算机系统;JRE(Java运行环境)是运行Java程序所必须的环境的集合,JRE包括Java虚拟机、Java平台核心类和支持文件;JDK(Java开发工具包)是针对Java开发人员的开发工具集合。

(2)JVM、JRE和JDK从范围上讲是从小到大的关系。

第二章

1、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?

答: switch ( expr1 )中, expr1 是一个整数表达式。因此  switch 能作用于byte 上。 long,string 都不能作用于 swtich 。

第三章

1、构造方法与一般方法有何区别?

答:构造方法区别于其他方法的地方是它的名字必须与其所在的类的名字相同,且没有返回类型。

第四章类之间的关系

1,什么叫多态,?如何理解多态?

2overloadoverride的区别?overloaded的方法是否可以改变返回值的类型?

3.构造器constructor是否可被override

第五章 抽象类 接口

简述抽象类,接口的异同?

抽象类和接口

相同点: (1) 都可以被继承 (2) 都不能被实例化 (3) 都可以包含方法声明(4) 派生类必须实现未实现的方法

区 别:1 接口可以被多重实现,抽象类只能被单一继承 2抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性  3抽象类有非抽象的方法和构造方法,并且修饰符可以是私有的,接口只能是抽象的方法,并且修饰符是public4 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法5  抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。6抽象类可以有普通成员变量,接口不行;

第六章 异常

什么是检查型异常,非检查型异常

检查型异常:指编译器要求必须处置的异常,是程序运行时由于外界因素造成的一般性异常

非检查型异常:指编译免这种异常的发生.器不要求强制处理的异常,该异常是因设计或实现方式不当导致的,可以避

简述java异常处理机制

java提供了两种处理异常的机制,一是捕获异常,二是声明抛出异常.

在java运行过程中系统得到一个异常对象时,它会沿着方法的调用栈逐层回溯,寻找处理这个异常的代码,,找到后,系统把当前异常对象教给这个方法处理,这就是捕获异常.如果方法中不知道如何处理所出现的异常,则可在定义方法时,声明抛出异常.

第七章

1简述一下使用泛型有什么优点?

答:泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

2.简要描述ArrayList,Vector,LinkedList的存储性能和特性?

答:ArrayList支持可随需要而调整的动态数组。其内部封装了一个动态再分配的Object[]数组。每个ArrayList对象有一个capacity,表示存储列表中元素的数组的容量。当元素添加到ArrayList时,它的capacity自动增加。在向一个ArrayList对象添加大量元素的程序中,可使用ensureCapacity()方法增加Capacity,此法可以减少或增加重分配的数量。Vector 由于使用了synchronized 方法(线程安全),通常性能上较ArrayList 差,而LinkedList 使用双向链表实现存储,按序号索引数据需要进

行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

3.简述CollectionCollections的区别。

答:java.util.Collection 是一个集合接口集合接口集合接口集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。

java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态静态静态静态多态方法多态方法多态方法多态方法。此类不能实例化不能实例化不能实例化不能实例化,就像一个工具类个工具类个工具类个工具类,服务于Java的Collection框架。 Java代码 。

4ListMapSet三个接口,存取元素时,各有什么特点?

答:List 以特定次序来持有元素,可有重复元素。

Set 无法拥有重复元素,内部排序。

Map 保存key-value值,value可多值。

5、描述HashMapHashtable的区别。

答:Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。

最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是

只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。

第八章:流与文件

一、Java中按照流的流向可分为几种,举例说明?按照流的角色分为几种,举例说明?按照流处理数据单位的大小(字节或字符)分为几种,举例说明?

按照流的流向分为:输入流和输出流。

按照流的角色分为:节点流和过滤流。

按照处理流的基本单位分为:字节流和字符流。

二、Reader类具有读取floatdouble类型数据的方法吗?

Reader类是表示字符输入流的所有类的父类,主要是用于从数据源按照字符的方式读取数据。

三、d盘中创建文件test.txt,文件中内容为“hello java”然后利用流把该文件拷贝到e盘根目录下?

// 在D盘中创建文件test.txt,文件中的内容为:“hello Java”
File file = new File("D:/test.txt");
StringBuilder builder = new StringBuilder();
builder.append("hello java");
OutputStreamWriter osw = null;
try {
osw = new FileWriter(file);
osw.write(builder.toString());
} catch (IOException e) {
e.printStackTrace();
} finally { // 最后一定要关闭流
if (osw != null) {
try {
osw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 利用流把该文件拷贝到E盘根目录下
InputStream ips = null;
OutputStream ops = null;
try {
ips = new FileInputStream(file);// 源文件
byte[] buffer = new byte[1024]; // 定义一个缓冲数组
ops = new FileOutputStream("E:/" + file.getName());// 目标文件
// 如果没有读到结尾就继续读,每次读指定的字节数
for (int len = 0; (len = ips.read(buffer)) != -1;) {
ops.write(buffer, 0, len); // 每次写出实际读取到长度
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally { // 最后关闭流
if (ips != null) {
try {
ips.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (ops != null) {
try {
ops.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

四、编程模仿dos下的dir命令,列出某个目录下的内容?

五、简述序列化和反序列化概念?

对象的序列化就是把对象写入到一个输出流中,对象的反序列化是指从一个输入流中读取一个对象。

小结:1、java把不同类型的输入、输出源抽象为流,用统一接口来表示,从而使程序简单明了。

2、Java中提供了处理字节流的类,既以inputstream和outputstream为基类派生出的一系列类。

3、Java中提供了处理unicode码表示的字符流的类,既以reader和writer为基类派生出的一系列类。

4、序列化是将数据分解成字节流,以便存储在文件中或者在网络上传输;反序列就是打开字节流并重构对象。

5、一个类可以序列化必须实现serializable和externaliable接口。/ / http://www.pprar.com

6、Java提供了支持对象序列化的对象流:objectinputstream和objectoutputstream。

第九章:JDBC

一、简述JDBC访问数据库的步骤?

1、加载JDBC驱动程序2、创建数据库连接3、创建statement4、执行SQL语句5、处理返回结果6、关闭创建的对象

二、使用JDBC查询Scott用户的emp表中的所有信息?

String sql="select * from emp";
PreparedStatement stmt =conn.prepareStatement(sql);//
ResultSet rs = stmt.executeQuery();

int columnCount = rs.getMetaData().getColumnCount(); //这地方补充了一下
while (rs.next()) {
    for (int i = 1; i <= columnCount; i++) {
        //map.put(md.getColumnName(i), rs.getObject(i));
        System.out.println( md.getColumnName(i) + " -- " +  rs.getObject(i) );
    }
}

小结:1、JDBC是java应用与数据库通信的的基础。

2、dbc包含一组类与接口,用于连接到任何数据库。

3、Jdbc通过result维持查询结果集,并提供游标进行数据操作。

4、通过statement实现静态SQL查询。

5、使用preparestatement实现动态SQL查询。

6、使用callablestatement实现存储过程的调用。

7、Databasemetadata接口用于得到关于数据库的信息。

8、Resultsetmetadata接口主要用来获取结果集的结构。

9、Jdbc默认的事务提交模式是自动提交。

10、通过setautocommit()方法控制自动提交模式,使用rollback()方法实现事务回滚。

第十章

1简述适配器与监听接口的区别?

区别:适配器只需要重写需要的事件处理方法,而监听接口需要实现全部的方法。

监听接口中定义了抽象的事件处理方法,这些方法针对不同的操作进行不同的处理。在程序中,通常使用监听类实现监听接口中的事件处理方法。监听接口定义在java.awt.event包中,该包中提供了不同事件的监听接口,这些接口中定义了不同的抽象的事件处理方法。

扩展监听接口时,有些事件处理方法是不需要的,但必须重写。处于简化代码的目的,java.awt.event包中有提供了一套抽象适配器类,分别实现每个具有多个事件处理方法的监听接口。这样继承适配器后,可以仅重写需要的事件处理方法。

2事件处理的步骤:

(1)创建监听类,在事件处理方法中编写事件处理代码

(2)创建监听对象

(3)利用组件的addXXXListener()方法将监听对象注册到组件上

第十一章

简述实现一个自定义的对话框的步骤?

(1)    继承JDialog类,在构造方法中传入参数

(2)    在对话框中添加用户界面组件

(3)    添加事件处理

(4)    设置对话框大小

第十二章

简述什么是多线程?

线程的最主要功能是多任务处理,即多线程。多线程也就是在主线程中有多个线程在运行,多个线程的执行是并发的,在逻辑上“同时”,而不管是不是物理上的“同时”。

多线程和传统上的单线程在程序设计上的区别在于:

由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度、同步等问题是需要重点留意的。

3         java如何进行异常处理

try代码块的功能就是监视异常的发生 ,如果try块中的代码产生异常时则由catch快进行捕获并处理,也就是说catch、代码块中的代码用于处理try代码块中抛出的具体异常类型的异常对象

try 不可以抛出异常