admin 管理员组文章数量: 1184232
2023年12月21日发(作者:数据库架构设计培训)
《Java程序设计》课后练习答案
第一章 Java概述
一、选择题
1.( A )是在Dos命令提示符下编译Java程序的命令,( B )是运行Java程序的命令。
2.( D )不是Java程序中有效的注释符号。
A.* */
C./** */
D.*/ */
3.( B )不是Java语言的特点。
A.面向对象
B.自动检查语法错误
C.跨平台
D.解释执行
编译器会将Java程序转换为( C )
A.可执行代码
B.目标代码
C.字节码
D.机器代码
源文件的扩展名是( D )
1、.class B. .jar C. .jav D. .java
二、简答题
1)、Java的跨平台的含义是什么为什么Java可以跨平台
Java语言的一个非常重要的特点就是平台无关性。它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。Java之所以能平台无关,主要是依靠Java虚拟机(JVM)来实现的。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。
Java编程人员在编写完Java程序后,Java编译器将Java源代码文件编译后生成字节码文件(一种与操作系统无关的二进制文件)。字节码文件通过Java虚拟机(JVM)里的类加载器加载后,经过字节码校验,由解释器解释成当前电脑的操作系统能够识别的目标代码并最终运行。以下图展示了Java程序从编译到最后运行的完整过程。
2)、简述Java语言的特点
Java具有以下特点:
1)、
简单性
Java语言的语法规则和C语言非常相似,只有很少一部分不同于C语言,并且Java还舍弃了C语言中复杂的数据类型(如:指针和结构体),因此很容易入门和掌握。
2)、
可靠性和安全性
Java从源代码到最终运行经历了一次编译和一次解释,每次都有进行检查,比其它只进行一次编译检查的编程语言具有更高的可靠性和安全性。
3)、
面向对象
Java是一种完全面向的编程语言,因此它具有面向对象编程语言都拥有的封装、继承和多态三大特点。
4)、
平台无关和解释执行
Java语言的一个非常重要的特点就是平台无关性。它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。Java之所以能平台无关,主要是依靠Java虚拟机(JVM)来实现的。Java编译器将Java源代码文件编译后生成字节码文件(一种与操作系统无关的二进制文件)。字节码文件通过Java虚拟机(JVM)里的类加载器加载后,经过字节码校验,由解释器解释成当前电脑的操作系统能够识别的目标代码并最终运行。下图展示了Java程序从编译到最后运行的完整过程。
5)、
分布式
分布式包括数据分布和操作分布,而Java支持WWW客户机/服务器计算模式,因此也支持这两种分布式。
6)、
多线程
Java在两方面支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。如果操作系统本身不支持多线程,Java的多线程特性可能就表现不出来。
三、综合编程题
1、
请编写一个简单的Java程序能够输出“这是我的第一个Java程序”。(注意为程序添加合适的注释和文档注释)。
/**
* 第一个java程序
*/
public class Demo {
/**
* main方法,程序的起点
*/
public static void main (String[] args) {
A. Double B. this C. string D. bool
面哪个单词是Java语言的关键字( B )
B.下面属于Java关键字的是( D )。
A. NULL B. IF C. Do D. goto
C.在启动Java应用程序时可以通过main( )方法一次性地传递多个参数。如果传递的参数有多个,可以用空格将这些参数分割;如果某一个参数本身包含空格,可以使用( B )把整个参数引起来。
A. 单引号 B. 双引号
D.下面哪个是Java语言中正确的标识符( BD )。
A. 5x B. $x C. abc@ D. com
语言中,下列标识符错误的是( D )。
A. _abc B. abc C. ABC D. 5abc
F.在Java中,整型常量不可以是( A )。
A. double B. Long C. int D. byte
G.在Java中,不属于整数常量的是( D )。
A. 100 B. 100L C. 0x100A D.
H.下面哪个语句能定义一个字符变量chr( B )。
A. char chr=’abcd’;
C. char chr=”abcd”;
B. char chr=’uabcd’;
D. char chr=uabcd;
I.下面哪个是对字符串s1的不正确定义( CD )。
A. String s1=”abcd”; B. String s1;
D. String s1=”abcd”; C. String s1=‘abcd0’;
J.下面哪个范围是char型的取值范围( C )。
A. -256 ~ 255 B. - (2^15) ~ (2^15)-1 C. u0000’ ~ ‘uffff’ D. 0~32767
K.下面哪条语句不能定义一个float型的变量f1( ABD )。
A. float f1= B. float f1= C. float f1= D. f1=
L.下列运算结果为float的是( C )。
A. 100/10 B. 100*10 C. +10 D. 100-10
M.数组中可以包含什么类型的元素( D )。
A. int型 B. string型 C. 数组 D. 以上都可以
N. Java中定义数组名为xyz,下面哪项可以得到数组元素的个数( B )。
A. ( ) B. C. len(xyz) D. ubound(xyz)
O.下面哪条语句定义了3个元素的数组( A )。
A. int [ ] a={20,30,40}; B. int a [ ]=new int(3); C. int [3] array; D. int [ ]
arr;
二、简答题
1、 Java有哪些基本的数据类型?写出这些基本数据类型所占用的最大空间(用字节描述)。
(1)数字型 (number),具体又分为:
a.整型 (integers),整型又包括:
①字节整数 (byte, 8 bits)
②短整数 (short, 16 bits)
③整数 (int, 32 bits)
④长整数 (long, 64 bits)
b.实型 (real numbers),具体又分为:
①单精度(float, 32 bits)
②双精度(double, 64 bits)
(2)字符型 (char, 16-bit Unicode字符)
(3)布尔型 (boolean)。
2、 说明Java字符编码的类型与特点。
Java字符编码的类型为Unicode,具有以下特点:
(1)Unicode是16比特的字符编码,其支持当前世界上绝大多数的语言;
(2)Unicode给每个字符提供了一个唯一的编码表示,不论是什么平台、程序或语言;
(3)Windows系统(Windows 2000版本)、Java、XML、LDAP等已支持Unicode;
(4)Unicode实现了ISO/IEC 10646标准;
3、 写出Java中六个常用的转义字符。
b 退格
t 制表符
n 换行 (Newline)
r 回车 (Carriage return)
' 单引号
4、 下面的几个标示符哪些是正确的,哪些是错误的,如果是错误的,请说明原因。
MyClass, _isHis, 3JavaProgram, _$asdf, Java-Visual-Machine
MyClass:正确,符合标识符的组成规则。
_isHis:正确,符合标识符的组成规则。
3JavaProgram:错误,因为第1个符号不能为数字。
_$asdf:正确,符合标识符的组成规则。
Java-Visual-Machine:错误,标识符不能为保留字。
5、 说出常量与变量的定义并举例说明。
常量是指程序执行过程中,值保持不变的量,类型划分如下:
整型常量
实型常量
布尔型常量
字符型常量
字符串常量
如整型常量:
十进制
起 始
0,1~9
最大整数(正) 最大长整数(正) 举 例
23, +567,
-12,0,1234
八进制 0
034,0175,
-0777L
十六进制 0x 0x7FFFFFFF 0x7FFFFFFFFFFFFFFFL 0xFF, 0x45L
变量是指在程序执行过程中,值可以改变的量,类型划分为:整型变量、实型变量、字符型变量、字符串变量、布尔变量等。如:int x=2,就定义了一个整型变量x并且赋值为2。
6、 什么是强制类型转换?并说明其运用场合。
显型类型转换是强制类型转换,它是一种窄化转换 (narrowing conversion),如:
double a = ;
float b = a;
编译: "possible loss of precision"
数据精度丢失,数据丢失。
强制类型转换一般运用在
二元运算符的二个操作数类型不同
表达式值的类型与变量的类型不同
7、 描述Java程序的构成。如何判断Java程序的主类下面的程序有哪些错误并改正,该程序的源代码应当保存为什么名字的文件
8、
Public class MyClass{
Public static void main(){
“my name is …”);
}
“the end!”);
}
Java程序的主类中包含main(),而其它类中没有;该程序的源代码应当保存为。另外该程序中包含以下的错误:
(1)Public的第一个字符应当小写;
(2)定界符“”应当改为"";
(3)printIn应该为println
(4)“the end!”); 代码应放在方法中
9、 结构化程序设计有哪三种基本流程分别对应Java中的那些语句
10、
结构化程序设计有下面三种基本流程:顺序结构语句,条件选择语句,循环控制语句,跳转/转向语句。
条件选择语句对应Java中的if,if-else,嵌套的if-else,条件运算符,switch-case。
循环控制语句对应Java中的for,while,do-while语句。
跳转/转向语句对应Java中的contonue,break,return语句。
11、 在一个循环中使用break,continue,return的差别。
break: 跳出(中止)循环
continue: 结束本次循环
return: 方法返回
12、 数组的定义,特点与分类。如何进行数组的初始化?
数组的定义:数组是一组同类型的变量或对象的集合。
数组的特点:数组的类型可以是基本类型,或类和接口;数组中每个元素的类型相同;引用数组元素通过数组名[下标];数组下标(数组的索引)从0开始。数组是一种特殊的对象(Object),可以定义类型 (声明);创建数组 (分配内存空间) ;释放 (Java虚拟机完成)。
数组分类:一维数组、多维数组。
第三章 面向对象的实现
一、 选择题
A.在Java中,用package说明一个包时,该包的层次结构必须是( B )。
A. 与文件的结构相同 B. 与文件的目录层次相同
C. 与文件的类型相同 D. 与文件大小相同
B.下列构造方法的调用方式中,正确的是( C )。
A. 按照一般方法调用 B. 由用户直接调用
C. 可通过new自动调用 D. 被系统调用
型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( D
A. public int MAX_LENGTH=100 B. final int MAX_LENGTH=100
C. public const int MAX_LENGTH=100 D. public final int MAX_LENGTH=100D.在Java中,以下叙述不正确的是 ( B )
A.构造方法名与类名相同。
B.构造方法不是用来完成初始化的。
C.构造方法由 new 操作调用,而不能被用户直接调用。
D.构造方法没有返回类型。
E.在Java中,下面的叙述哪个是不正确的(
D )
A.
类的静态方法可以在该类的对象被创建前调用
)。
B.
类的静态方法不能访问该类的非静态方法
C.
abstract 修饰符可以出现在类或方法的前面,但不能出现在变量之前
D.
final 修饰符可以出现在类或变量之前,但不能出现在方法之前
F.在Java里,下列选项( D )不是实现面向对象思想的机制。
A.
封装
C.
多态
B. 继承
D. 数据类型转换
G.类Worker是类Person的子类,Worker构造方法中有一句"super( );",该语句是什么意思(
C )
A.调用类Worker中定义的super( )方法
B.调用类Person中定义的super()方法
C.
调用类Person的构造函数
D.
语法错误
H.给定Java程序,如下:编译运行,结果是( C )。
public class Test{
private static final int counter=10;
public static void main(String[ ] args){
}
}
A. 10
B. 11
C. 编译错误 D. 运行时出现异常
I.给定如下Java代码,编译时会在( D )出现错误。(只选择一项)
class Parent{
}
class Child extends Parent{
public static void main(String[ ] args){
A.
Parent p1 = new Child( ); 第二行
C.第三行 D. 第四行
J.在Java中,某类方法使用下列( BC )访问修饰符修饰后,可以被其的子类访问。
A.
private
C.
public
B. protected
D. friendly
K.在Java 语言中,如果你有下面的类定义:
abstract class Shape{
abstract void draw();
}
class Square extends Shape{
}
以下描述正确的是( B )
A.
一切成功编译
B.
Shape可以编译,Square不能编译
C.
Square可以编译,Shape不能编译
D.
Square,Shape都不能编译
L.分析下列Java代码:
class A{
public static void main(String[ ] args){
method( );
}
static void method( ){
(0);
}
}
编译运行后,输出结果是( A )。
A.
"Hello" B. "good-bye"
C.
"Hello"后面是"good-bye" D. 代码不能编译
M.下表是final修饰符与变量、方法、类等一起作用的结果的对应表,但是对应关系存在错误,请选择正确的对应关系。( C )
概念 作用
1 变量 A 不能再产生子类
2 方法 B 一旦赋值,就不能更改
3 类 C不能在子类中覆盖
A.
1-A
B.
1-C
C.
1-B
D.
1-C
N.有以下程序:
2-B
2-A
2-C
2-B
3-C
3-B
3-A
3-A
public class ConstOver {
public ConstOver (int x, int y, int z) { }
}
下面哪个方法重载了上面的ConstOver构造方法( B )
A.
protected int ConstOver ( ){ }
B.
private ConstOver (int z, int y, byte x) { }
C.
public object ConstOver (int x, int y, int z) { }
D.
public void ConstOver (byte x, byte y, byte z) { }
O.有以下程序:
class BaseClass {
private float x = ;
public float getVar() ( return x;)
}
class Subclass extends BaseClass {
private float x = ;
出下列程序运行的结果( B )
public class Example{
String str = new String("good");
char[ ] ch = {'a','b','c'};
public static void main(String[ ] args){
Example ex=new Example( );
,;
}
public void change(String str, char ch[ ]){
str = "test ok";
ch[0] = 'g';
}
}
A.
good and abc
ok and abc
B. good and gbc
D. test ok and gbc
Q.下列哪些语句关于内存回收的说明是正确的
( B )
A.
程序员必须创建一个线程来释放内存;
B.
内存回收程序负责释放无用内存;
C.
内存回收程序允许程序员直接释放内存;
D.
内存回收程序可以在指定的时间释放内存对象。
R.创建一个名为“”的文件,该文件中只有一个可被整个工程中的所有类访问的类,那么该类的正确声明应为:( C )
class MyClass extends Object B. class TestClass extends Object
class MyClass D. public class TestClass
S.下列叙述中,错误的是 ( A )
A.内部类的名称与定义它的类的名称可以相同
B.内部类可用abstract修饰
C.内部类可作为其他类的成员
D.内部类可访问它所在类的成员
T.用于在子类中调用被重写的父类方法的关键字是 ( B )
A.
this
B.
super
C.
This
D.
Super
U.下面程序输出结果是 ( A )
public class Delta {
static boolean foo(char c) {
return true;
}
public static void main( String[] argv ) {
int i =0;
for ( foo('A'); foo('B')&&(i<2); foo('C')){
i++ ;
foo('D');
}
}
}
C.编译错误
D.运行时异常
V.下列( B )修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问。
A.
private
C.
public
B. 无修饰符
D. protected
W.给出下列代码,如何使成员变量m 被方法fun( )直接访问
( C )
class Test{
private int m;
public static void fun( ){
...
}
}
A.
将private int m 改为protected int m
B.
将private int m 改为 public int m
C.
将private int m 改为 static int m
D.
将private int m 改为 int m
X.已知有下列类的说明,则下列哪个语句是正确的
( A )
public class Test{
private float f = ;
int m = 12;
static int n = 1;
public static void main(String[ ] args){
Test t = new Test( );
}
}
A.
; B. ;
C.
; D. ;
Y.下列代码的执行结果是 ( A )
public class Test{
public void aMethod( ) {
static int i = 0;
i++;
}
public static void main(String[ ] args){
Test test = new Test( );
( );
}
}
A.编译错误 B. 0
D. 运行成功,但不输出Z.若特快订单是一种订单,则特快订单类和订单类的关系是(A.
使用关系 B. 包含关系
C.
继承关系 D. 无关系
AA.下列代码中,将引起一个编译错误的行是( D )
1)public class Test{
2) int m,n;
3) public Test( ) { }
4) public Test(int a) {m=a;}
5) public static void main(String[ ] args){
6) Test t1,t2;
7) int j, k;
)
C
8) j = 0; k = 0;
9) t1 = new Test();
10) t2 = new Test(j,k);
11) }
12)}
A.第3行
B. 第5行
D. 第10行 3、第6行
AB.下列叙述中,错误的是( D )
A.
父类不能替代子类
B. 子类能够替代父类
D. 父类包含子类 3、子类继承父类
二、 程序阅读题
1、 写出以下程序的结果:
public class Test {
private static void printArray(int[] arr) {
for(int i=0;i< ;i++)
}
private static void changeValue(int value) {
value*=2;
}
private static void changeValue(int[] arr) {
for(int i=0;i<;i++)
arr[i]*=2;
}
public static void main (String[] args) {
int[] arr={1,2,3,4,5};
changeValue(arr[0]);
}
}
printArray(arr);
changeValue(arr);
printArray(arr);
运行结果:
1,2,3,4,5,
2,4,6,8,10,
2、 指出以下程序的错误,并改正:
public class Main {
public static final A obj = null;
public static void main(String[] args) {
obj = new A();
}
}
class A{
}
错误:final的对象不能改变。
3、 指出以下程序的错误,并改正:
public class Test {
public static void main(String[] args) {
MyClass obj=new MyClass();
+=”,World!”;
}
}
class MyClass {
public String Info=”Hello”;
public MyClass(String Info)
{
=Info;
}
}
错误:MyClass obj=new MyClass();找不到匹配的构造方法。
4、 指出下面程序的错误,并改正:
abstract class Animal {
public abstract void saySomething() {
你想说什么就说吧!”);
}
}
class Dog extends Animal {
public void saySomething() {
我现在有了第二职业:捉耗子!”);
}
}
public class Test {
public static void main (String[] args) {
Animal ani=new Dog();
();
}
}
错误:public abstract?void saySomething()抽象方法不能有方法体。
三、 简答题
1.简述继承、方法重写和抽象类如何支持多态性(
略)
2.解释什么是方法重载和重定义,并举例说明他们的作用。(略)
3.说明抽象类与接口的区别。(略)
4.什么是垃圾回收,它是如何工作的什么是finalize()(略)
5.举例说明this关键字的作用(
略)
6.举例说明java中枚举类型的用法。(略)
第四章 异常和异常处理
一、选择题
A.以下( A )和( C )是Throwable的直接子类。
B. NullPointerException
D. Assert
B.能单独和finally块一起使用的块是( A )
A. try
C. throw
B. catch
D. throws
C.下列异常类中,在多重catch中同时使用时( C )异常类的catch块应该最后列出?
B. ArithmeticException
D. ArrayIndexOutOfBoundsException C. Exception
D.程序读入用户输入的一个值,要求创建一个自定义的异常,如果输入值大于10,使用throw语句显式地引发异常,异常输出信息为"something wrong!",语句为( C )。
A. if (i>10) throw Exception("something wrong!");
B. if (i>10) throw Exception e ("something wrong!");
C. if (i>10) throw new Exception("something wrong!");
D. if (i>10) throw new Exception e ("something wrong!");
E.分析下列Java代码:
class A{
public static void main(String[ ] args){
method( );
}
static void method( ){
try{
(0);
}finally{
}
}
}
编译运行后,输出结果是( A )
A. Hello B. good-bye
C. Hello D. 代码不能编译
good-bye
F.关于捕获错误的语法try-catch-finally的下列描述正确的是( C
必须和catch搭配使用
可以单独使用
可以搭配使用
)。
D.在try块后如果定义了finally,则不能再定义catch块
G.在Java 中,假定有一个包含引起异常(不是一个RuntimeException)的代码的方法,用什么方式告诉方法的调用者要捕获该异常。( B )
Exception
B. throws Exception
D. 不用特别指定 C. new Exception
H.考虑下列JAVA代码:
class A{
public static void main(String[ ] args){
try{
"Hello,World!");
}
}
}
这段代码错误的原因是( A )。
A. 没有catch和finally块
B. 没有抛出异常的代码不能出现在try代码块内
C. 如果没有catch块而使用try,main( )会总是抛出异常
D. class A没有throws IOException
I.考虑一下代码,编译运行之后,会( D )
String s=null;
(0));
A.输出null
B.没有输出
C.编译错误
D.编译成功,但是运行时报NullPointerException异常
J.研究下面的Java代码:
public class testException{
public static void main(String[ ] args){
int a[ ]={0,1,2,3,4};
int sum=0;
try{
for(int i=1;i<6;i++)
sum=sum+a[i];
}catch(ArrayIndexOutOfBoundsException e){
}finally{
}
}
}
输出结果将是( C )。
数组越界
程序结束
程序结束
C.数组越界
程序结束
D.程序结束
第五章 包和字符串
一、 选择题
1. Java编程所必须的默认引用包为( B )
A. 包
C. 包
B. 包
D. 以上都不是
2. 在Java中,所有类的根类是( A )
3. 设有下面两个赋值语句:
x1=("123");
x2=("123").intValue();
下述说法正确的是( D )。
A. x1为int型变量,x2为Integer类的对象
B. x2为int型变量,x1为Integer类的对象
C. x1、x2均为Integer类的对象
D. x1、x2均为int型变量
4. 在Java中,存放字符串常量的对象属于( B )类对象。
A. Character
B. String
C. StringBuffer D. Vector
5. 已知如下定义:String str = "I love";下面( D )表达式是合法的。A. char ch = str[0]; B. int len = ;
C. String to = (1, 2); D. str += "China";
6. 设有以下程序段,执行后,屏幕输出( A )。
String s1 = "I love "+"China";
String s2 = new String(s1);
if (s1 == s2)
if (s2) == true)
A. equals B. == C. == equals D.
7. 下列方法中,不属于类String的方法是( D )。
A. toLowerCase () B. replace () C. charAt ()
8. 有下列程序:
public class aa{
public static void main(String[ ] args) {
String s = "";
不输出
D. append ()
try {
double number1 = (s);
int number2 = (s);
}catch(NumberFormatException nfe) {
}catch(Exception e){
}
}
}
执行结果是( C )。
A. B. Sorry C. Sorry D. 程序编译错误
第六章 包和字符串
一、 选择题
A.下列( A )集合不能含有重复元素。
A. Set B. List C. Map D. Collection
B.当元素个数固定时,使用( D )集合查找效率最高。
A. Set B. List C. Map D. Arrays
C.你希望存储少量数据并能快速访问. 你并不需要排序这些数据,那种数据结构最适合这种需求
( D )
A. TreeSet B. HashMap C. LinkedList D. 数组
D.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 (
B )
A. ArrayList myList=new Object();
B. List myList=new ArrayList();
C. ArrayList myList=new List();
D. List myList=new List();
E.关于HashMap和TreeMap类,判断下列那种说法是正确的(
A )
A. 它们都能方便地定位映射中的值对象
B. 它们都实现了SortedMap接口
C. 它们都能高效地按照顺序遍历键
D. 以上说法都不对
F.下列哪个不是Iterator接口所定义的方法(
D )
A. hasNext() B. next() C. remove() D. nextElement()
G.关于链表结构,陈述错误的是哪个(
B )
A. 链表可动态增长
B. 在链表中查找对象是最有效的
C. 链表中的元素可以重复
D. 通常情况下,向链表中插入元素的效率高于向ArrayList中插入元素的效率
语言的集合框架类定义在( B )语言包中。
A. B. C.
集合如何处理重复的元素( B )
A. 如果试图向Set集合中添加一个与集合中已有元素值相同的元素时,将抛出异常
B. 如果试图向Set集合中添加一个与集合中已有元素值相同的元素时,add方法返回false
C. 如果试图向Set集合中添加一个与集合中已有元素值相同的元素时,将发生编译错误
D. 可以在Set集合中添加一个与集合中已有元素值相同的元素
J.下列哪项是正确的(
D )
A. Collection是集合继承体系中根类
B. Collection接口中提供了enumerator方法
C. interator方法返回Vector类的对象
D. 实现Set接口的类对象中,每个元素的值均不相等
K.给定下列java代码:
import .*;
public class LetterASort {
public static void main(String[ ] args) {
ArrayList
("aAaA");
("AaA");
("aAa");
("AAaa");
(strings);
for ( String s : strings ) {
}
}
}
对该程序编译运行,结果是( C )。
A. 编译失败
B. aAaAaAaAAaaAaA
C. AAaaAaAaAaaAaA
D. AaAAAaaaAaAaAa
E. aAaAaAaAaAAAaa
F. 运行时抛出异常
L.给定下列java代码:
定下列java代码:
import .*;
public class Old {
public static Object get(List list){
return ( 0 );
}
}
以下选项中,哪三个能编译成功( ADE )
o = (new LinkedList());
o = (new LinkedList>());
s = (new LinkedList
o = (new LinkedList
s = (String)(new LinkedList
N.给定下列java代码:
public void takeList(List< extends String> list){
定下列java代码:
public class Score implements Comparable
private int wins, losses;
public Score(int w, int 1) { wins = w; losses = 1; }
public int getWins( ) { return wins; }
public int getLosses( ) { return losses; }
public String toString( ) {
return "<" + wins + "," + losses + ">";
}
定下列java代码:
public static void append(List list) { (”0042”); }
public static void main(String[] args) {
List
append(intList);
}
对该程序编译运行,结果是( D )。
3.运行时发生异常
4.编译错误
二、 阅读程序,并填空。
1.
有以下程序:
public class Gen
private T object;
public Gen_( T object ) {
= object;
}
public T getObject() {
return object;
}
public static void main(String[] args){
Gen
Gen
}
}
该程序运行结果为42,请将以下选项填入下划线内。注意每个选项均可重复选择。
A. Gen
B. Gen>
C. Gen
D. ?
E. T
2.
有以下程序:
import .*;
public class MyInt implements Comparable{
private int i;
public MyInt(int i) { = i;}
public String toString() { return (i); }
public int compareTo(Object o){
MyInt i2 = (MyInt)o;
return ;
}
public static void main(String[] args) {
ArrayList
(new MyInt(2));
(new MyInt(1));
(list);
}
}
该程序运行结果为[1,2],请将以下选项填入下划线内。
-
– i
(MyInt o, MyInt i2)
(Object o, Object i2)
(MyInt o)
(Object o )
三、 综合编程题
1. 设有一数列:a1=3,a2=8,……,an=2an-1+2an-2,使用堆栈结构输出an的若干项。
import
public class NumNameMap {
public static void main(String[] args) {
}
2. 有如下的类:
public class NumberList{
private ArrayList al;
public NumberList(int[] value){
面关于的说法哪个正确(
A B C )
是一个PrintStream
是一个OutputStream
HashMap
("1","list");
("2","Bill");
("3","Ann");
}
是一个FilterOutputStream
不是一个PrintStream
B.下面哪个语句可以建立文件“”的字节输入流(
D )
A. InputStream in = new InputStream("")
B. InputStream in = new FileReader("")
C. FileInputStream in = new FileOutputStream("")
D. FileInputStream in = new FileInputStream("")
C.当前文件系统中已经存在了文件,该文件包涵有ASCII文本,代码片段如下:
try {
File f = new File("");
outputStream out = new FileOutputStream(f, true);
}catch (IOException) {
}
结果是什么( B )
A.代码不能编译
B.代码可以编译并运行,对该文件不会有改变
C.代码可以编译并运行,并将该文件的长度设置为0
D.抛出异常,因为该文件没有关闭
E.代码可以编译运行,并从文件系统中删除该文件。
D.下面哪个选项可以将“hello”字符写入文件的末尾(
B )
A. OutputStream out= new FileOutputStream ("");
("hello");
B. OutputStream os= new FileOutputStream ("", true);
DataOutputStream out = new DataOutputStream(os);
("hello");
C. OutputStream os= new FileOutputStream ("");
DataOutputStream out = new DataOutputStream(os);
("hello");
D. OutputStream os= new OutputStream ("", true);
DataOutputStream out = new DataOutputStream(os);
("hello");
E.哪个类是FilterOutputStream类构造器的合法参数(
B )
)
A. 一个对象在一个JVM被序列化后,可以在另外一个JVM被反序列化
B. 声明成transient的数据成员不能被序列化和反序列化
C. 声明成static的数据成员,因为该数据成员是对象内部的成员,所以仍然可以被序列化
D. 如果一个父类可以被序列化,则所有继承该类的子类也可以被序列化
G.分析下面给出的代码结果是什么?
import .*;
public class Forest implements Serializable {
private Tree tree = new Tree();
public static void main(String[] args) {
Forest f = new Forest();
}
}
try {
FileOutputStream fs = new FileOutputStream("");
ObjectOutputStream os = new ObjectOutputStream(fs);
(f);
();
} catch (Exception ex) {
}
();
class Tree {
}
结果是什么( B )
A.
代码不能编译
B.
代码可以编译,运行时抛出异常
C.
一个Forest实例被序列化
D.
一个Forest实例和Tree实例都被序列化
H.分析下面的代码:
a)import .*;
b)public class Foo implements Serializable{
c) public int x, y;
d) public Foo(int x, int y){ = x; = y;}
e) private void writeObject(ObjctOutputStream s) throws IOException{
f) (x);
g) (y);
h) }
i) private void readObject(ObjectInputStream s) throws IOException,
ClassNotFoundException{
j) 定下面代码中的serializeBanana( )和deserializeBanana( )方法可以正确的执行,分析下面的代码,结果是什么(
C )
import .*;
class Food implements Serializable {
}
class Fruit extends Food {
}
public class Banana extends Fruit {
int yellow = 4;
public static void main(String[] args) {
Banana b = new Banana();
Banana b2 = new Banana();
int juice = 5;
int good = 3;
(b); 下哪个不是Swing容器组件(
C )
A. JFrame
B. JPanel
C. JTextArea
D. JScrollPane
B.如果想在界面上创建一个如图8-所示的效果,需要拖放哪些组件(
CD )(选两项)
图8-33 鼠标事件程序
C.以下哪个不是Java事件处理机制的元素(
D )
A. 事件
B. 事件监听器
D. 事件处理程序
C.事件源
D.以下关于布局管理器哪句是错误的(
D )
将组件按顺序从左到右、从上到下进行排列
布局将组件按照上、下、左、右、中进行排列
布局将组件按照行和列的矩阵进行排列
布局中允许放置多于5个的组件
E.以下那句描述不正确(
D )
组件是在AWT基础上发展起来的
组件是纯Java的轻量型组件
3.所有的Swing组件均已“J”开头
组件所在的包在中
F.哪个组件可以从一组选项中选择多个选项(
C )
G.以下哪一个是JTable的父类(
A )
H.以下菜单类中哪个是父类(
D )
A. JCheckBoxMenuItem
B. JRadioButtonMenuItem
C. JMenu
D. JMenuItem
第九章 JDBC数据库编程
一、选择题
A.用于创建数据库连接的接口是哪个(
B )
B.用于执行SQL语句并返回执行结果的接口是哪个(
C )
A. Connection
B. DriverManager
C. Statement
D. ResultSet
C.用于保存查询结果的接口是哪个(
D )
A. Connection
B. DriverManager
C. Statement
D. ResultSet
D.访问数据库必须要捕获的异常是哪个(
B )
E.以下哪个不是使用预编译接口的优点(
D )
A. 速度快
B. 一次编译,多次执行
C. 效率高
D. 代码量少
二、简答题
1.简述JDBC技术连接数据库的优点。
答:JDBC(Java Database Connectivity,Java数据库连接)技术是Sun公司推出的一种专门访问数据库的API。它是由一组用 Java 编程语言编写的类和接口组成,支持基本SQL语句,提供多样化的数据库连接方式,可连接不同的数据库。JDBC技术是用来Java语言编写的访问数据库标准接口,使用这样的API编写的应用程序无论从安全性、健壮性、可移植性都是具有优势的
2.简述JDBC技术连接数据库的步骤。
;
try{
SQLServer里创建一个名为MyDB的数据库,数据库里有一张Users表,表中有UserID,UserName两个字段,请写出连接MyDB数据库和访问Users表中数据的代码。
4.;
class DBAccess {
7. public static Connection JavaCon() {
8. try {
9.
11.
13. Connection conn = (url,"sa", "");
14. return conn;
15. } catch (ClassNotFoundException ex1) {
16. ();
18. return null;
19. } catch (SQLException ex2) {
20. ();
22. return null;
23. }
24. }
25.}
26. public static void main (String[] args){
27. Connection conn=JavaCon();
29. try{
30. Statement stmt = ();
32. String sql="Select * from Users";
33. ResultSet rs = (sql);
35. while()){
37. Vector line=new Vector();
39. for (int i = 1; i <= 4; i++) {
41. (i));
42. }
43. (line);
45. }
46. ();
48. ();
50. ();
52. return data;
53. }catch(SQLException ex){
54. ();
55. return null;
56. }
57. }
58.}
第十章 多线程
一、选择题
1.
线程同步的方法有多种,下面不正确的是( A )。
A. setPriority( )方法 B. sleep( )方法 C. notify( )方法 D. notifyAll( )方法
2.
线程被阻塞可能是多方面原因造成的,下面方法中哪一种不能引起线程阻塞( D )。
A.调用sleep( )方法,使线程进入睡眠状态。
B.用suspend( )方法暂停纯种的执行。
C.用wati( )方法暂停线程的执行。
D.调用setPriority( )方法。
3.
下面不是产生死锁的必要条件的是( B )。
A. 互斥条件
B. 不可抢占
D. 循环等待
C.占有CPU并运行
4.
下面哪个操作不能使线程从等待阻塞状态进入到对象阻塞状态( D )。
1.等待阻塞状态下的线程被notify( )方法调用。
2.等待阻塞状态下的线程被Interrupt( )方法中断。
3.等待时间到。
4.等待阻塞状态下的线程调用wait( )方法。
5.
下面说法错误的是( C )。
A. Java中的第一个线程都属于某个线程组。
B. 线程只能在其创建时设置其线程组。
C. 线程创建之后,可以从一个线程组转移到另一个线程组。
D. 新建线程默认情况下属于其父线程所属的线程组。
二、问答题
1.举例说明什么是多线程?
2.线程进程相比,有什么优越性?
3.举例说明创建线程的两种方法?
( )方法和wait( )方法有什么区别?
5.当一个线程进入一个对象的synchronized方法后,其他线程是否可进入此对象的其他方法?
6.简述线程的生命周期?
7.线程的优先级如何得知,如何设置,主线程的优先级是多少?
8.如何理解线程抢占式调度和线程轮转
三、编程题
A.模拟一个电子时钟,它可以在任何时候被启动或停止,并可独立运行。这个类称为Clock类,它继承Label类。这个类有一个Thread类型的clocker域,以及start( )、stop( )和run( )方法。在run( )方法的while循环中每隔一秒就把系统时间显示为label文本。构造方法初始化时,把Label设为当前系统时间。
B.编写一个龟兔赛跑的多线程程序,单击按钮龟兔开始运行。
C.编写一个程序,让一个小球在JFrame中滚动,当撞到边缘时则选择一个角度反弹回去。
第十一章 网络编程
一、选择题
A.在TCP/IP中解决计算机之间的通信问题的是( A )
A.网络层
B.应用层
C.数据链路层
D.传输层
B.
socket=new Socket(" ",1001);
addr= (" ");
Socket socket=new Socket(" ",1001,addr,1008);
addr= (" ");
Socket socket=new Socket(" ",1008,addr,1001);
socket=new Socket(" ",1008);
C.
A. ServerSocket socket=new ServerSocket(1008);
B. ServerSocket socket=new ServerSocket(1008,10);
C. InetAddress addr= (“localhost”);
ServerSocket socket=new ServerSocket(1008,10,addr);
D. InetAddress addr= (" ");
ServerSocket socket=new ServerSocket(1008,10,addr);
D.如果本机拥有多个IP地址,则执行以下代码的结果是( A )
InetAddress addrs[]= ("localhost ");
for(int i=0;i<;i++){
}
A. 显示所有IP地址的值
B. 显示其中一个IP地址的值
C. 不显示任何信息
D. 出错
二、填空题
1.
InetAddress类代表Internet上的(主机地址),InetAddress类的一个实例由(主机名)与(主机地址)组成。
2.
(DatagramPacket)代表了UDP中的数据报,被发送的数据报包含了(目的地地址)以及(内容),(DatagramSocket)完成了数据报的发送与接收。
版权声明:本文标题:Java程序设计课后练习答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1703173392a440949.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论