《JAVA程序设计》期末考试试题
与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和静态的语言。下面一起来看看《JAVA程序设计》期末考试试题,希望对同学们的复习有所帮助!

《JAVA程序设计》期末考试试题 1
Java语言程序设计考试通常包括各种类型的问题,从基础的语法和概念到复杂的编程问题。以下是一些可能出现在考试中的试题示例:
一、选择题
1. Java中用于定义类的关键字是什么?
A. class
B. define
C. declare
D. function
2. 下列哪个是Java中的访问修饰符?
A. public
B. global
C. native
D. external
3. 在Java中,用于打印输出到控制台的类是?
A. System.out
B. Console
C. PrintWriter
D. System.print
二、填空题
1. 在Java中,用来结束当前运行的方法是xxxxxxxxxx。
2. Java程序的主入口点是方法名xxxxxxxxxx。
三、简答题
1. 解释Java中的继承以及它如何工作。
2. 描述接口与抽象类的区别。
四、编程题
1. 编写一个Java程序,该程序定义一个名为`Person`的类,包含两个私有属性`name`和`age`,以及相应的构造函数和getter/setter方法。
2. 创建一个Java程序,该程序能够计算并输出一个整数数组的所有元素的平均值。
3. 实现一个Java方法,该方法接受一个字符串参数,并返回一个新的字符串,其中原字符串的'所有元音字母都被替换为字符*。
五、错误识别题
给定一段Java代码,要求考生找出代码中的错误,并解释错误的原因以及如何修正。
六、案例分析题
描述一个实际问题(例如,银行账户管理、图书管理系统等),要求考生设计并实现相应的Java类来解决该问题。
七、算法题
编写一个Java方法,使用递归方式计算给定正整数的阶乘。
八、OOP设计题
设计一个简单的在线商店系统,包括产品类、购物车类和用户类,展示对象之间的交互和类的继承关系。
这些题目涵盖了Java程序设计的多个方面,包括基本概念、语法、面向对象编程、异常处理、算法和数据结构等。考试的难度和具体内容会根据课程的教学大纲和目标而有所不同。
《JAVA程序设计》期末考试试题 2
一、选择题
1、结构化程序设计主要强调的是______。
A、程序的规模
B、程序的易读性
C、程序的执行效率
D、程序的可移植性
结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。
本题答案为B。
2、数据库设计包括两个方面的设计内容,它们是______。
A、概念设计和逻辑设计
B、模式设计和内模式设计
C、内模式设计和物理设计
D、结构特性设计和行为特性设计
数据库设计可分为概念设计与逻辑设计。
数据库概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。
数据库逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。
本题答案是A。
3、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为______。
A、static void method( )
B、public void method( )
C、final void method( )
D、abstract void method( )
本题考查的是修饰符的含义。
1、public修饰的方法可被其它类访问或引用。
2、abstract修饰的方法是抽象方法,抽象方法没有方法体,要使用抽象方法,必须先实现此抽象方法。
3、final修饰的方法不能被继承。
4、static修饰的.方法为静态方法,静态方法不需要类的实例化就可以被类直接调用。
故要使得类名AB可以直接调用method()方法,则必须在method()前用static来修饰。
故本题答案为A。
4、监测器接口的方法返回值的类型是______。
A、int
B、String
C、void
D、Object
本题考查的是监测器。
每个事件都有自己的监测器,监测器本身是一种接口,该接口中的方法,返回值是void类型。当要为指定的类注册监测器时,就可以通过定在实现该接口的类中定义该方法,这样可以在某个事件发生后,将会自动执行相应方法中的代码。
故本题答案为C。
5、outer: for(int i=0;i<3; i++)
inner: for(int j=0;j<2;j++)
{
if(j==1) continue outer;
System.out.println(j+ "and "+i+";");
}
以上代码输出是 。
A、0 and 0;0 and 1;0 and 2;
B、0 and 0;1 and 0;2 and 0;
C、1 and 0;1 and 1;1 and 2;
D、2 and 0;2 and 1;2 and 2;
本题考查的是多重循环。
首先介绍一下continue语句的功能:continue语句是跳过循环体中下面尚未执行的语句,回到循环体的开始,继续下一轮的循环。
本题程序运行过程如下:
i=0:
j=0 条件j==1不成立,输出j和i,即0 and 0;
j=1 条件j==1成立,执行continue,跳过System.out.println(j+ "and "+i+";");执行下一轮循环j=2;
j=2 条件j<2不满足,退出内层循环,继续外层循环。
i=1:
j=0 条件j==1不成立,输出j和i,即0 and 1;
j=1 条件j==1成立,执行continue,跳过System.out.println(j+ "and "+i+";");执行下一轮循环j=2;
j=2 条件j<2不满足,退出内层循环,继续外层循环。
i=2:
j=0 条件j==1不成立,输出j和i,即0 and 2;
j=1 条件j==1成立,执行continue,跳过System.out.println(j+ "and "+i+";");执行下一轮循环j=2;
j=2 条件j<2不满足,退出内层循环,继续外层循环。
i=3:条件i<3不满足,结束。
故本题答案为A。
二、选择题
编程题
1、 编写一个Java Application 程序App.java,main程序输入10个整数给数组,通过函数getMinAndMax(int a[])得到这10个整数的最大值和最小值并输出结果。
class App {
static void getMinAndMax(int a[]) {
int min,max;
min = max = a[0];
for(int i=1;i if(a[i]>max)
max=a[i];
if(a[i] min=a[i]; }
System.out.println(“Array’Max Value:”+max);
System.out.println(“Array’Min Value:”+min);
}
public static void main(String[] args) {
int arr[] = {4,6,72,9,14,3,8,23,56,32};
getMinAndMax(arr); } }
2、编写一个完整的Java Application 程序。包含接口ShapeArea, Rectangle
类,Triangle类及Test类,具体要求如下:
⑴接口ShapeArea:
double getArea( ):
求一个形状的面积
double getPerimeter ( ):
求一个形状的周长
⑵类 Rectangle:实现ShapeArea接口,并有以下属性和方法:
① 属性
width: double类型,表示矩形的长 height: double类型,表示矩形的高
② 方法
Rectangle(double w, double h):构造函数
toString( )
方法 :输出矩形的描述信息,如“width=1.0,height=2.0, perimeter=6.0, area=2.0”
⑶类Triangle:实现ShapeArea接口,并有以下属性和方法:
① 属性
x,y,z: double型,表示三角形的三条边
s: 周长的1/2(注:求三角形面积公式为))( )((zsysxss,s=(x+y+z)/2 ,开方可用Math.sqrt(double)方法)
② 方法
Triangle(double x, double y, double z):
构造函数,给三条边和s赋初值。
toString( ):
输出矩形的描述信息,如“three sides:3.0,4.0,5.0,perimeter=12.0,area=6.0”
⑷Test类作为主类要完成测试功能
① 生成Rectangle对象
②
调用对象的toString方法,输出对象的描述信息
interface ShapeArea { double getArea( );
double getPerimeter( );
}
class Rectangle implements ShapeArea { double width,height;
Rectangle(double w,double h) {ko width =w;
height=h;
}
public void toString( )
{
System.out.println("width="+width+",height="+height+", perimeter="+ getPerimeter( )+", area="+ getArea( ));
}
public double getArea( )
{ return width*height;
}
public double getPerimeter( )
{ return 2*(width+height);
} }
class Triangle implements ShapeArea { double x,y,z,s; Triangle(double x, double y, double z) { this.x =x; this.y=y;
this.z=z; s = (x+y+z)/2; }
public void toString( )
{
System.out.println("Three Sides:"+x+","+y+","+z+",Perimeter="+ getPerimeter( )+", area="+ getArea( ));
}
public double getArea( )
{
return Math.sqrt(s*(s-x)*(s-y)*(s-z));
}
public double getPerimeter( )
{ return x+y+z;
} }
class test { public static void main(String[] args) { Rectangle rct = new Rectangle(4,5);
rct.to_String( );
} }
《JAVA程序设计》期末考试试题 3
1). 下面( )是合法的标识符。
A.$persons
B.2Users
C.*poi nt
D.this
正确答案:A
答案解析:本题考查Java 标识符的命名,属于考试重点内容,应该掌握。Java 中标识符的命名规则是:标识符以字母、下画线或美元符作为首字符的字符串序列;标识符是区分大小写的;标识符的字符数没有限制。由此可见,Java 中标识符不能以数字开头,所以选项B错误;不能以“*”开头,选项C错误;this 是专用标识符,具有专门的意义和用途,选项D 错误,只有选项A 正确。
2). 设有一个已按各元素的值排好序的顺序表(长度大于2),现分别用顺序查找法和二分查找法查找与给定值k相等的元素,比较的次数分别是s和b,在查找不成功情况下s和b的关系是( )。
A.s =b
B.s>b
C.s
D.s>=b
正确答案:B
答案解析:顺序查找的基本思想是:从表的一端开始,顺序扫描线性表,依次将扫描到结点的关键字和给定值k进行比较,若当前扫描到结点的关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的结点,则查找失败。二分查找法是一种效率较高的查找方法,要求线性表是有序表。基本思想是:首先将待查的k值和有序表R[O]~R[n -1]的中间位置mid上的结点的关键字进行比较,若相等,则查找完成;否则,若R[mi d]. key>k,则说明待查找的结点只可能在左子表R[O]~R[mi d -1]中,我们只需在左子表中继续进行折半查找,若R[mi d]. key
3). 定义一个表示10个值为null的字符串数组,下面选项正确的是( )。
A.String []a;
B.String a[];
C.char a[10][];
D.String a[]=new String[10];
正确答案:D
答案解析:本题考查字符串数组变量的声明。选项A和选项B的效果是一样的,都是用来定义一个字符串数组,但没有指明数组个数,不满足题目要求;选项C是一个二维的字符数组,在C语言中,一个二维的字符数组就可以表示一个一维的字符串数组,而在Java中,字符char是基本类型,字符串String则是以对象的形式来表示的;选项D正确,它定义了一个含有10个元素的字符串数组,如果没有给字符串数组赋值,则默认为null。
4). Thread类中能运行线程的方法是( )。
A.resume()
B.start()
C.run()
D.init()
正确答案:C
答案解析:resume()是Thread类提供的用于线程控制的方法;start()是Thread类中的方法,新建的线程不会自动运行,必须调用线程的start()方法才能运行该线程;run()是Thread类中的方法,在该方法中定义了线程的具体行为,线程开始执行时,就是从它的run()方法开始执行的,就像Java应用程序从main()开始、Applet从init()开始一样;init()不是Thread类中的方法。
5). 在面向对象的.方法中,一个对象请求另一个对象为其服务的方式是通过发送
A.调用语句
B.命令
C.口令
D.消息
正确答案:D
6). 下列的( )原始类型在使用流时可以互换。
A.byte和boolean
B.char和int
C.byte和char
D.String和char
正确答案:B
答案解析:本题考查Java语言中字节类型的概念。在Java语言中,byte是字节类型,用1字节表示.boolean是布尔类型,用true和false表示,它们的表示方法并不一样,也不提供它们之间的转换,选项A错误。Java内部用整数来表示char,通常可以在方法调用和其他语句中互换使用char和int,选项B正确。char用2字节表示,byte字节类型用l字节表示,Java内部也不允许互换使用它们,选项C错误。String在Java语言中是一个类,它提供对字符串的一系列操作,而char是Java语言中的一个基本类型,它不是一个类,两者有本质的区别,故而它们是不能互换使用的,选项D错误。需要注意的是,在Java语言中提供的类都是以大写字母开头,基本类型都用小写字母表示。
7). 下列说法中,不属于数据模型所描述的内容是( )。
A.数据结构
B.数据操作
C.数据查询
D.数据约束
正确答案:C
答案解析:数据模型所描述的内容包括三个部分
《JAVA程序设计》期末考试试题 4
一、单选题:(每题1分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。
1.下列语句序列执行后,k 的值是( B )。
int m=3, n=6, k=0;
while( (m++) < ( -- n) ) ++k;
A) 0 B) 1 C) 2 D) 3
2.设 i、j 为int型变量名,a 为int型数组名,以下选项中,正确的赋值语句是( B )。
A) i = i + 2 B) a[0] = 7;
C) i++ - --j; D) a(0) = 66;
3.Java语言的类间的继承关系是( B )。
A) 多重的 B) 单重的 C) 线程的 D) 不能继承
4.设有定义 int i = 6 ;,则执行以下语句后,i 的值为( C )。
i += i - 1;
A) 10 B) 121 C) 11 D) 100
5.下列选项中,用于在定义子类时声明父类名的关键字是( C )。
A)interface B) package C) extends D) class
6.若已定义 byte[ ] x= {11,22,33,-66} ;
其中0≤k≤3,则对x数组元素错误的引用是( C )。
A) x[5-3] B) x[k] C) x[k+5] D) x[0]
7.下列语句序列执行后,ch1 的值是( B )。
char ch1=A,ch2=W;
if(ch1 + 2 < ch2 ) ++ch1;
A) A B) B C) C D) B
8.下列语句序列执行后,i 的值是( D )。
int i=8, j=16;
if( i-1 > j ) i--; else j--;
A) 15 B) 16 C) 7 D) 8
9.下列语句序列执行后,k 的值是( C )。
int i=10, j=18, k=30;
switch( j - i )
{ case 8 : k++;
case 9 : k+=2;
case 10: k+=3;
default : k/=j;
}
A) 31 B) 32 C) 2 D) 33
10.下面语句执行后,i 的值是( B )。
for( int i=0, j=1; j < 5; j+=3 ) i=i+j;
A) 4 B) 5 C) 6 D) 7
二、填空题:(每空1分)
1. 构造函数x没xx有返回值。
2. Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float和 xxx double xxxxxxx两种具体类型。
3. 创建类对象的运算符是xx new。
4. 当整型变量n的值不能被13除尽时,其值为 false 的Java语言表达式是xxn%13==0xxxxxxxxxxx 。
5. 在Java语言中,所有的数组都有一个lenght属性,这个属性存储了该数组的xx元素个数。
6. 定义类就是定义一种抽象的xxxxxx父类xxxxxx,它是所有具有一定共性的对象的抽象描述。
7. 在Java语言中,使用xx平台无关xxx、xxxjava虚拟机xxx等技术,实现软件重用。
8. 表达式3/6 * 5的计算结果是xxxx0xxxx 。
三、程序分析:(每题4分)
1. 下面是一个排序的程序:
import java.io.*;
public class Test56xSort
{
public static void main(String args[ ])
{
int[] a={42,99,5,63,95,36,2,69,200,96};
System.out.println(排序前的数据序列:);
ShowArray(a);
Sort(a);
System.out.println(排序后的`数据序列:);
ShowArray(a);
}
public static void Sort(int[] x)
{
int w;
for(int i=1; i
{
for(int j=0; j
if(x[j]>x[j+1])
{ w=x[j]; x[j]=x[j+1]; x[j+1]=w; }
/* if(i==1||i==2) ShowArray(x);
if(i==2) break; */
}
}
public static void ShowArray(int b[])
{
for(int i=0; i
System.out.print("b[i"+i+"]=" +b[i]);
System.out.println( );
}
}
问题: 如果将方法Sort( )中的一对注释符(/* */)去掉,程序输出的结果是什么?
排序前的数据序列:
b[0]=42b[1]=99b[2]=5b[3]=63b[4]=95b[5]=36b[6]=2b[7]=69b[8]=200b[9]=96
b[0]=42b[1]=5b[2]=63b[3]=95b[4]=36b[5]=2b[6]=69b[7]=99b[8]=96b[9]=200
b[0]=5b[1]=42b[2]=63b[3]=36b[4]=2b[5]=69b[6]=95b[7]=96b[8]=99b[9]=200
排序后的数据序列:
b[0]=5b[1]=42b[2]=63b[3]=36b[4]=2b[5]=69b[6]=95b[7]=96b[8]=99b[9]=200
2. 请写下程序的输出结果:
public class Test52
{
String str1="Hello, Java world! ";
String str2="Hello, students!" ;
public static void main(String args[])
{
System.out.print(str1);
System.out.println(str2);
}
}
输出结果:
四、问答题:(每题5分,)
1. Java的接口和C++的虚类的相同和不同处。
由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是 public static,所有方法默认情况下是public.一个类可以实现多个接口。
2. 垃圾回收的优点和原理。并考虑2种回收机制。
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的'对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
3,谈谈final, finally, finalize的区别。
Final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
Finally-再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
Finalize-方法名。Java 技术允许使用 finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
4,数组有没有length()这个方法? String有没有length()这个方法?举例说明使用方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
5. Java中的异常处理机制的简单原理和应用。
当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发 NullPointerException.另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用 throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。
五、程序设计:(每题11分,共33分)
1、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
2、编程求解:所有两位整数能被3整除的数的和,以及不能被3整除的数的各位数字之和。
3、设计一个程序求解e的值。精度达到1.0e-6,4、请设计一个对N个数进行排序的程序
《JAVA程序设计》期末考试试题 5
一、 单选题
1、当某一线程正处于休眠状态,而另一个线程用 Thread 类中的interrupt() 方法中断它时,抛出的异常类型是( )。
A) IOException B) RuntimeException
C) InterruptedException D)ClassNotFoundException
2、下面的程序段的功能是( )。
File file1=new File("d:\\xxx\\yyy\\zzz");
file1.mkdirs();
A)在当前目录下生成子目录:\xxx\yyy\zzz B)生成目录:e:\xxx\yyy\zzz
C)在当前目录下生成文件xxx.yyy.zzz D)以上说法都不对
3、应用程序的main方法中有以下语句,则输出的结果是 ( )。
Strings = "xxxxxxxxxxxxxxx#123#456#zzzzz";
intn = s.indexOf("#");
int k = s.indexOf("#", n+1);
Strings2 = s.substring(n+1, k);
System.out.println(s2);
A) 123456 B) 123 C)xxxxxxxxxxxxxxx D) zzzzz
4、关于下面的程序Test.java说法正确的是( )。
public class Test {
Stringx="1";
int y;
publicstatic void main(String args[]) {
intz=2;
System.out.println(x+y+z);
}
}
A)3 B)102 C)12 D)程序有编译错误
5、应用程序的main方法中有以下语句,则输出的结果是 ( )。
int b[][]={{1, 1, 1}, {2,2}, {3}};
int sum=0;
for(int i=0; i
for(int j=0; j
sum+=b[i][j];
}
}
System.out.println("sum="+sum);
A) 10 B)6 C) 9 D) 13
6、应用程序的main方法中有以下语句,则执行后输出的结果是 ( )。
int[] x = {125,21,5,168,98};
int min = x[0];
for (int i=1; i
if(x[i]
min =x[i];
}
System.out.println(min);
A) 125 B) 5 C) 98 D) 168
7、应用程序的main方法中有以下语句,则输出的结果是 ( )。
Hashtable hashtable=new Hashtable();
hashtable.put("100","aaa");
hashtable.put("200","bbb");
hashtable.put("300","ccc");
System.out.println(hashtable.get("300").toString()
+hashtable.get("200").toString()
+ hashtable.get("100").toString());
A)aaa B) bbb C) ccc D) cccbbbaaa
8、以下关于java异常说法不正确的是( )。
A) Throwable 类是 Java 语言中Error类和Exception类的父类。
B)当异常对象是Exception类(或其子类)的实例时,能通过 Java 虚拟机或者 throw语句抛出该异常对象,并能通过try…catch…finally处理。
C)如果只用一个catch块捕捉多个异常对象,则catch 子句中的参数类型应是所有异常对象的父类。
D)以上说法都不对。
9、下面的程序创建了一个文件输出流对象,用来向文件test.txt中输出数据,假设程序当前目录下不存在文件test.txt,编译下面的程序Test.java后,将该程序运行3次,则文件test.txt 的内容是( )。
import java.io.*;
public class Test {
publicstatic void main(String args[]) {
try{
Strings="ABCDE";
byteb[]=s.getBytes();
FileOutputStreamfile=new FileOutputStream("test.txt", true);
file.write(b);
file.close();
}
catch(IOExceptione) {
System.out.println(e.toString());
}
}
}
A) ABCABC B) ABCDE C)Test D) ABCDE ABCDE ABCDE
10、下面说法不正确的是( )?
A)列表(List)、集合(Set)和映射(Map)都是java.util包中的接口。
B)List接口是可以包含重复元素的有序集合。
C)Set接口是不包含重复元素的集合。
D)Map接口将键映射到值,键可以重复,但每个键最多只能映射一个值。
二、多选题
1、下面哪些关键字能用来控制对类成员的访问( )?
A) public B) protected C) private D) default
2、下面关于Java中异常处理try块的说法正确的是( )?
A) try块后通常应有一个catch 块,用来处理try块中抛出的异常。
B) catch 块后必须有finally块。
C)可能抛出异常的方法调用应放在try块中。
D)对抛出的异常的处理必须放在try块中
3、线程对象的生命周期中,通常经历下面哪些状态( )。
A)新建 B)运行 C)就绪 D)死亡
4、定义如下的二维数组b,下面的说法正确的是( )。
int b[][]={{1, 2, 3}, {4, 5},{6, 7, 8}}};
A)b.length的值是3。 B)b[1].length的值是3。
C)b[1][1]的值是5。 D) 二维数组b的第一行有3个元素
5、类B是一个抽象类,类C是类B的非抽象子类,下列创建对象x1的语句中正确的是( )。
A) B x1= new B( ); B) B x1= newC( );
C) C x1=new C(); D) C x1= new B( );
6、下面关于进程、线程的说法正确的是( )。
A)进程是程序的.一次动态执行过程。一个进程在其执行过程中,可以产生多个线程——多线程,形成多条执行线索。
B)线程是比进程更小的执行单位,是在一个进程中独立的控制流,即程序内部的控制流。线程本身不能自动运行,栖身于某个进程之中,由进程启动执行。
C)Java多线程的运行与平台相关。
D)对于单处理器系统,多个线程分时间片获取CPU或其他系统资源来运行。对于多处理器系统,线程可以分配到多个处理器中,从而真正的并发执行多任务。
7、下面关于外部类和内部类成员的相互访问的规则中,正确的选项是( )。
A)内部类可以直接访问外部类的成员
B)外部类可以直接访问内部类的成员
C)外部类不能访问内部类的成员
D)外部类可通过创建内部类的实例来访问内部类的成员
三、程序阅读题
1、阅读下面的程序代码,并回答问题(u问3分,v问3分,共6分)。
String s1 = new String("abcde");
Strings2 = new String("abcde");
booleanb1= s1.equals(s2);
booleanb2 = s1== s2;
System.out.print(b1+" "+b2);
u程序段执行后,在命令行的输出结果如何?
v解释输出(1)的结果的原因?
答案:
u true false
vequals方法比较两个字符串的内容是否相等;运算符“==”判断两个对象是否指向同一个引用,即是否为同一个对象。
2、阅读下面的程序,并回答问题(u问3分,v问3分,共6分)。
import java.io.*;
public class Test {
public static void main(String args[]) throws IOException {
BufferedReader buf=new BufferedReader(
newInputStreamReader(System.in));
while(true) {
String str = buf.readLine();
if(str.equals("quit"))
break;
int x=Integer.parseInt(str);
System.out.println(x*x);
}
}
}
编译运行上面的程序:
u从键盘输入10,回车后输出的结果如何?
v从键盘输入exit,回车后程序能正确执行吗?为什么?
答案:
u100
v不能;因为方法Integer.parseInt(str)不能将字符串“exit”转化为整数,抛出异常。
3、写出下面的程序编译、运行后的结果(6分)。
public class Test{
public static void main(String args[]) {
new Student("Tom", m, 90, 88);
new Student("Jack", m, 66,89);
new Student("Mary", f, 76,86);
System.out.println("name\tsex\tchinese\tenglish");
Student.print();
}
}
class Student {
protected String name;
protected char sex;
protected int chinese;
protected int english;
protected Student next;
static Student list;
Student (String name, char sex, int chinese,int english) {
this.name=name;
this.sex=sex;
this.chinese=chinese;
this.english=english;
this.next=list;
list=this;
}
static void print() {
Student friend=list;
if (friend==null)
System.out.println("The listis empty.");
else {
do{
System.out.println(friend.toString());
friend=friend.next;
}while(friend!=null);
}
}
public String toString() {
return newString(name+"\t"+sex+"\t"+chinese+"\t"+english);
}
}
答案:
name sex chinese english
Mary f 76 86
Jack m 66 89
Tom m 90 88
【《JAVA程序设计》期末考试试题】相关文章:
《JAVA程序设计》期末考试试题06-01
sun认证:java程序设计考试试题07-25
大学java期末考试试题08-18
2017年java期末考试试题10-20
计算机二级Java语言程序设计试题11-01
2016年java期末考试试题及答案10-11
java试题及答案07-04
2017java期末考试参考试题07-31