一、单选题
1.对于合法标识符的定义说法正确的是( A )
A. 只能以字母,下划线( _ )或美元符( $ )开头,数字不能作为开头
B. 不能包含美元符($)以外的特殊符号
C. 不能包含空格
D. 可以是中文字符
2.给出下面代码:
public class Person{
static int arr[]=new int[10];
public static void main(String a[])
{
System.out.println(arr[1]);
}
}
以下说法正确的是? ( C )
A. 编译时将产生错误;
B. 编译时正确,运行时将产生错误;
C. 输出零
D. 输出空.
3.编译下面的程序,得到的结果是:( C )
public class A implements Runnable {
public void run() {
System.out.println(“OK”);
}
public static void main(String args[]) {
Thread th = new Thread(new A());
Th.start();
}
}
A. 程序能编译运行, 但没有任何结果输出
B. 程序不能编译,产生异常
C. 程序能编译运行, 输出结果:OK
D.以上都不对
4.给出下面的不完整的类代码:
class Person {
String name, department;
int age;
public Person(String n) { name = n; }
public Person(String n, int a) { name = n; age=a;}
public Person(String n, String d, int a) {
// doing the same as two arguments version of constructor
// includeing assignment name=n, age=a
department = d;
}
}
下面哪个语句可以加到构造方法中的”doing the same as… ”处。( D )
A. Person(n, a);
B. this(Person(n, a));
C. this(name, age);
D. this(n, a);
5.下面哪个赋值语句是错误的。( D )
A. double d = 3.14D;
B. double d = 5.3E12;
C. double d = 3.14159;
D. float f = 11.1;
二、多选题
1.执行下列代码后,哪些结论是不正确的String[] s =new String[10];( ACD)?
A: s[10]为"";
B: s[9]为null;
C: s[0]为未定义;
D: s.length()=10;
2.下面关于继承的哪些叙述的正确的:( CD )
A. 在Java中一个类只能实现一个接口。
B. 在java中一个类不能同时继承一个类和实现一个接口
C. Java的单继承使代码更可靠。
D. 在java中只允许单继承。
3.关于异常,下面哪个代码是合法的?(A C D E)
A. try{} catch(NullPointerException ex) {} catch(Exception ex) {}
B. try{} catch(Exception e){} catch(ArithmeticException a){}
C. try{} catch(Throwable th){} finally{}
D. try{} finally {}
E. try{} catch(Throwable th){}
4.下面哪些不是Java的关键字 (AB )
A. sizeof
B. NULL
C. instanceof
D. true
E. implements
5.下列方法是public void method(){…}的重载方法有( A D )?
A:public void method(int m){…}
B:public int method(){…}
C:public void method2(){…}
D:public int method(int m,float f){…}
三、填空题
-
数组的特点是长度固定,可以用下标索引,并且所有的元素的类型都是一致的。
-
如果一个类的声明中没有使用extends关键字,这个类被系统默认为是 object 类的子类。
-
在Java 集合中不能存放基本类型数据,如果要存放数字,应该使用包装类型 Integer 。
-
Java语言使用 Thread 类及其子类的对象来表示线程。
-
HTML是一种描述性的超文本标记语言,主要用于组织网页的内容和控制输出格式。
-
在Javascript中定义了一个变量,但没有为该变量赋值,如果alert该变量,javascript 弹出的对话框中显示 undefined。
-
在Servlet中,主要使用HttpServletResponse类的重定向方法 sendRedirect 方法实现重定向,以及使用RequestDispatcher类的转发方法 forward 方法实现转发功能。
-
在JSP中为内置对象定义了4种作用范围,即 Application Scope 、 Session Scope 、Page Scope 和Request Scope 四个作用范围。
-
实现Filter接口的类需要重写 doFilter方法、init方法、destroy方法。
-
MVC中,模型 封装了数据和对数据的操作,是实际进行数据处理计算的地方。 视图 是应用和用户之间的接口,它负责将应用显现给用户和显示模型的状态。控制器 负责视图和模型之间的交互,控制对用户输入的响应、响应方式和流程。
四、简答题
1.什么是方法重写(override)?并说明方法重写与方法重载(overioad)的区别
重写是父类与子类之间多态性的一种表现,在运行时起作用(动态多态性,譬如实现动态绑定)。而重载是一个类中多态性的一种表现,在编译时起作用(静态多态性,譬如实现静态绑定)。重写的条件是方法名、参数列表、返回值相同,子类的访问修饰符权限不能比父类的小,子类抛出的异常小于父类。而重载的条件是方法名相同,参数列表不同,返回值随意。
2.http 中重定向和请求转发的区别?
转发
- 地址栏不会改变
- 转发只能转发到当前web应用内的资源
- 在转发过程中,可以将数据保存到request作用域对象中
- 转发只有一次行为
- 转发是服务端行为
重定向
- 重定向地址栏发生改变
- 重定向可以跳转到当前Web应用,甚至是外部域名网站
- 不能在重定向的过程中,保存数据到request作用域对象中
- 可以多次重定向
- 重定向是客户端行为
3.jsp有哪些内置对象?作用分别是什么?
1)request 表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header和session数据的有用的方法。
2) response 表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)。
3) out 对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
4)pageContext 表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
5)session 表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息。
6)application 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息。
7)config 表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
8)page 表示从该页面产生的一个servlet实例。
9)exception 针对错误网页,未捕捉的例外
4.请简述文件上传时表单需要满足的3个条件。
1. 表单的method属性设置为post;
2. 表单的enctype属性设置为multipart/form-data;
3. 提供<input type="file" name="filename" />的文件上传输入框。
5.请简述SSM框架整合思路。
由于Spring MVC是Spring框架中的一个模块,所以Spring MVC与Spring之间不存在整合的问题,只要引入相应JAR包就可以直接使用。因此SSM框架的整合就只涉及到了Spring与MyBatis的整合,以及Spring MVC与MyBatis的整合。Spring与MyBatis框架的整合时,通过Spring实例化Bean,然后调用实例对象中的查询方法来执行MyBatis映射文件中的SQL语句的,如果能够正确查询出数据库中的数据,那么就可以认为Spring与MyBatis框架整合成功。加入Spring MVC后,如果可以通过前台页面来执行查询方法,并且查询出的数据能够在页面中正确显示,那么就可以认为三大框架整合成功。
五、编程题
1.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153 = 1的三次方 + 5的三次方 + 3的三次方。
public class MainTest{
public static void main(String[] args){
for(int i=100;i<1000;i++){
if(isLotus(i))
System.out.print(i+" ");
}
System.out.println();
}
//判断水仙花数
private static boolean isLotus(int lotus){
int m = 0;
int n = lotus;
int sum = 0;
m = n/100;
n-= m*100;
sum = m*m*m;
m = n/10;
n-= m*10;
sum += m*m*m + n*n*n;
if(sum==lotus)
return true;
else
return false;
}
}
2.利用递归方法求5!。
public class MainTest{
public static void main(String[] args){
System.out.println(fact(5));
}
//递归求阶乘
private static long fact(int n){
if(n==1)
return 1;
else
return fact(n-1)*n;
}
}