一、 选择题
下列各题 A )、 B )、 C )、 D )四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。
1. 下列语句序列执行后, k 的值是 ( ) 。
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 型数组名,以下选项中,正确的赋值语句是 ( ) 。
A) i = i + 2 B) a[0] = 7;
C) i++ - --j; D) a(0) = 66;
3. Java 语言的类间的继承关系是 ( ) 。
A) 多重的 B) 单重的 C) 线程的 D) 不能继承
4. 下列选项中,用于在定义子类时声明父类名的关键字是 ( ) 。
A ) interface B) package C) extends D) class
5. 以下由 for 语句构成的循环执行的次数是 ( ) 。
for ( int i = 0; true ; i++) ;
A) 有语法错,不能执行 B) 无限次
C) 执行 1 次 D) 一次也不执行
6. 定义类头时能使用的修饰符是 ( ) 。
A) private B) static C) abstract D) protected
7. 设 int 型变量 a 、 b , float 型变量 x 、 y , char 型变量 ch 均已正确定义并赋值,
正确的 switch 语句是 ( ) 。 [switch 语句只允许 int 值、 char 值或枚举常量 ]
A) switch (x + y) B) switch ( ch + 1 )
{ ...... } { ...... }
C) switch ch D) switch ( a + b );
{ ...... } { ...... }
8. 既能作为类的修饰符 , 也能作为类成员的修饰符的是 ( ) 。
A) public B) extends C) Float D) static
9. 设 i,j 为类 x 中定义的 double 型变量名,下列 x 类的构造函数中不正确的是 ( ) 。
A) double x(double k ){ i=k; return i; }
B) x(double m, double n ){ i=m; j=n; }
C) x( ){i=0;j=0 }
D) x(double k ){ i=k; }
10. 若一个类中对某个方法进行了重载,能够区分这些重载方法的手段是 ( ) 。
A) 它们的返回值类型的不同 B) 它们的名称的不同
C) 它们的参数表的不同 D) 它们的修饰符不同
11. 下面是有关子类继承父类构造函数的描述,其中正确的是 ( ) 。
A) 创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数。
B) 子类无条件地继承父类不含参数的构造函数。
C) 子类必须通过 super 关键字调用父类的构造函数。
D) 子类无法继承父类的构造函数。
12. 欲构造 ArrayList 类的一个实例,此类继承了 List 接口,下列哪个方法是正确的? ( ) A) ArrayList myList=new Object (); B) List myList=new ArrayList (); C) ArrayList myList=new List (); D) List myList=new List ();
二、填空题。
1. 声明并创建类MyClass的一个对象,其名称为obj,可通过以下语句实现: MyClass obj=new MyClass();。
2.. 设 x, y,max,min 均为 int 型变量, x、y 已赋值。用三目条件运算符,求变量 x 、y的最大值和最小值,并分别赋给变量 max 和min, 这两个赋值语句分别是 max=x>y?x:y;和min=x<y?x:y;。
3. 结构化程序设计的三种基本流程控制结构是:顺序、循环、分支。
4. 若a,b为int型变量且已分别赋值为2,4。表达式!(++a!=b--)的值是false 。
5.在Java语言中,将后缀名为_java_的源代码编译后形成后缀名为___class___的字节码文件。
6. 设有整型数组的定义:int a[]=new int[8]; ,则a.length的值为_8_。
7. 栈是一种先进__后出__的线性数据结构,而队列是先进__先出__的线性数据结构。
8.如果子类中的某个方法的_方法名_、_参数类型_和_参数个数_与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。
9. 若a,b为int型变量且已分别赋值为2,6。表达式(a++)+(++b) +a*b的值是_30_。
10. 定义数组,需要完成以下三个步骤,即:_确定数组类型_、_确定数组名_和_确定数组长度_。
三、判断题
1. 类头定义包含的四个部分分别为:访问控制修饰符、类名说明、父类名说明和接口名的说明,它们中的任何一个都是不能缺少的。 (F)
2. 在 Applet 的坐标系中,(0,0) 代表输出窗口左上角的象素点。 (T)
3.应用程序一定要有main()方法,小程序一定要继承于Applet 类。 (T)
4.java语言中的逻辑变量可以和整型变量相互强制转换。
5. 面向对象的软件开发方法用类把数据和基于数据的操作封装在一起,并且类之间可以存在继承关系。 (T)
6.方法可以没有返回值,或有一个返回值,也可以有多个返回值。(T)
7. 一个类中用private 修饰符修饰的属性成员,可被该类的方法和它的子类的方法访问。 (F)
8.构造函数能继承,也能被重载。 (T)
9.Java 源程序的文件名必须和公共类的类名相同。 (T)
10.双精度数强制转换成单精度数后,其数值精度会提高。
11. 队列、链表、堆栈和树都是线性数据结构。 (F)
12.属性的隐藏是指子类重新定义从父类继承来的同名变量。
13.用static修饰的方法称为静态方法,它不属于类的一个具体对象,而是整个类的类方法。 (T)
14.java语言中的接口可以继承,一个接口通过关键字extends可以继承另一个接口。 (T)
15.声明为final的方法不能在子类中重载。
四、读程序回答问题
1 .阅读程序 , 回答以下问题
// InheritTest1.java
public class InheritTest1
{
public static void main (String[] args)
{
A aa;
B bb;
aa=new A( );
bb=new B( );
aa.show( );
bb.show();
}
}
//A.java
public class A
{
int a=1;
double d=2.0;
void show( )
{
System.out.println("Class A: "+"\ta="+a +"\td="+d);
}
}
//B.java
public class B extends A
{
float a=3.0f;
String d="Java program.";
int b=4;
void show( )
{
System.out.println("Class A: "+"\ta="+super.a +"\td="+super.d);
super.show( );
System.out.println("Class B: "+"\ta="+a +"\td="+d+"\tb="+b);
}
}
问题:
1 ) 这是哪一类java程序?JAVA应用程序,即 J2SE
2) 类A和类B是什么关系?类B继承类 A
3) 按程序输出的格式写出程序运行后的结果.
Class A: a=1d=2.0
Class A: a=1d=2.0
Class A: a=1d=2.0
Class B: a=3.0 d=Java program. b=4
2 .现有类说明如下:
class A
{
int x=10;
int GetA(){return x;}
}
class B extends A
{
int x=100;
int GetB(return x;}
}
问题:
1) 类 B 是否能继承类 A 的属性 x ?可以?????
2) 若 b 是类 B 的对象,则 b.GetB() 的返回值是什么? 100
3) 若 b 是类 B 的对象,则 b.GetA() 的返回值是什么? 10
4) 类 A 和类 B 都定义了 x 属性,这种现象称为什么?多态
五.简答题:
1 .谈谈final, finally, finalize的区别?
对于Final,如果一个类声明为final,表明它不能再派生出新的子类,不能作为父类被继承;如果类的属性或方法声明为final,则它们在使用中不被改变,且属性必须在声明时给定初值,以后的引用中只能读取,不能修改,而方法只能使用,不能重载。
对于finally,是在异常处理时提供finally块来执行清除操作。
对于finalize,它是方法名,finalize()用于在垃圾收集器将内存中对象清除出去之前做必要的清理工作。
2 .String s = new String("xyz");创建了几个String Object?
两个对象,一个是“xyz”,一个是指向“xyz”的引用对象s。
3 .Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()? 它们有何区别?
可以用iterator()方法来区分Set里的元素是否重复;equals()用于判断两个Set()是否相等;
4 .说出ArrayList, Vector, LinkedList的存储性能和特性?
ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢, Vector 由于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
5 .接口是否可继承接口? 抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?
可以;可以;可以,但前提是实体类必须有明确的构造函数。
6 . 说出Servlet的生命周期?
1 、装载Servlet;2、创建Servlet实例;3、调用Servlet的init()方法;4、使用Servlet进行服务;5、销毁Servlet。
7 .说出JSP的内置对象及方法?
out:print(datatype),println(datatype);
request:getAttribute(String),setAttribute(String,Object);
response:setContentType(String);
session:getAttribute(String),setAttribute(String,Object),isvalidate();
pageContext:getAttribute(String),setAttribute(),getSession(),getRequest(),
getResponse();
application:getAttribute(String),setAttribute(String,Object);
config:
page:
exception:
8. STRUTS 是如何实现MVC框架的?
使用STRUTS实现MVC框架时,模型层是用Java Bean或者EJB组件来实现;视图层用jsp文件来实现,其中只有一些标签;控制器用ActionServlet类和Action类来实现。
9 .说出 JAVA 访问权限修饰词 public private protected 的区别?
对于一个类的属性和方法,声明为 public 时,则当前类,子类,当前包,不同包中的类都可以访问它;声明为 private 时,则只能在当前类中被访问;声明为 protected 时,则当前类,子类,当前包中的类可以访问它,其他包要访问,必须用 import 将其包含进来。
10 . <jsp:useBean> 标签中 scope 选项总共有几种作用域?请分别说出每一个作用域的具体含义?
Scope 选项共有 page , request , session , application 四个作用域。
page 能够在包含 useBean 标签的 jsp 文件中使用 Bean ,页面执行完毕或转到另一个文件为止; request 用于 Bean 在请求的范围内有效; session 用于在 session 有效范围内可以使用这个 Bean ; application 用于可以在任何使用相同 application 的 jsp 中使用 Bean 。
11 .在 JSP 开发过程中,对于同一个用户的会话,要想在不同的页面之间共享数据,可以有几种选择?请一一列举。
· 把数据保存在Session中;
· 通过Cookie;
· 通过隐含的表单把数据提交到下一个页面;
· 通过ServletContext对象;
· 通过Application对象;
· 通过文件系统或者数据库