1. 下列哪一种叙述是正确的(D)
A. abstract修饰符可修饰字段、方法和类
B. 抽象方法的body部分必须用一对大括号{ }包住
C. 声明抽象方法,大括号可有可无
D. 声明抽象方法不可写出大括号
Abstract修饰符可用于类,属性,方法,索引器和事件但不能修饰字段。
声明抽象方法不可写出{},抽象方法定义就是没有方法体
2. 如下代码
public class Test {
public int aMethod() {
static int i = 0;
i++;
return i;
}
public static void main (String args[]) {
Test test = new Test();
test.aMethod();
int j = test.aMethod();
System.out.println(j);
}
}
输出结果是什么? D
A. 0
B. 1
C. 2
D. 编译失败
要把static int i = 0;放到方法外面做全局变量,又不是在抽象或类接口里面不能声明为静态的局部变量
3. 下列哪种说法是正确的(D )
A. 实例方法可直接调用超类的实例方法
B. 实例方法可直接调用超类的类方法
C. 实例方法可直接调用其他类的实例方法
D. 实例方法可直接调用本类的类方法
A:如果超类的实例方法没有在子类中被重写的可以直接调用,但经过子类重写就被覆盖了,需要super关键字来调用
实例方法调用其他类的方法需要引用调用
4. 如下代码:
class Super {
public Integer getLenght() { return new Integer(4); }
}
public class Sub extends Super {
public Long getLenght() { return new Long(5); }
public static void main(String[] args) {
Super sooper = new Super();
Sub sub = new Sub();
System.out.println(sooper.getLenght().toString() + "," +
sub.getLenght().toString() );
}
}
输出是什么? A
A. 4,4
B. 4,5
C. 5,4
D. 5,5
E. 编译失败.---------重定时不能改变返回类型
5. 在Servlet处理请求的方式为: C
A.以进程的方式
B.以程序的方式
C.以线程的方式
D.以响应的方式
6. JDBC中,用于表示数据库连接的对象是: B
A.Statement
B.Connection
C.DriverManager
D.PreparedStatement
.Statement:对象用于执行不带参数的sql语句。
DriverManager:作用于用户和驱动之间,并在数据库和相应的驱动之间建立连接。PreparedStatement:有预编译功能执行sql语句,相同数量批量数据操作
7. 如下代码:
class Base {
Base() { System.out.print("Base"); }
}
public class Alpha extends Base {
public static void main( String[] args ) {
new Alpha(); -----调用父类无参的构造方法
new Base();
}
}
结果是什么? b
A. Base
B. BaseBase
C. 编译失败.
D. 代码运行但没有输出.
E. 运行时抛出异常
new Alpha(); 调用父类的构造方法,走一遍syso(“Base”)
new Base();调用子类的main方法,在走一遍父类的构造方法syso(“Base”),
8. 在J2EE中属于Web层的组件有: A
A.Servlet
B.EJB
C.Applet
D.HTML
web 层组件J2EE web层组件可以是JSP 页面或Servlets.按照J2EE规范,静态的HTML页面和Applets不算是web层组件。
9. 在Servlet的生命周期中,容器只调用一次的方法是: c
A.service
B.getServletConfig
C.init
D.destroy
(init() 和destroy() 即 初始化 和 销毁 只执行一次)
如果服务器不是正常停止的话,destory方法不执行。
10. 以下关于异常的说法正确的是:d
A. 一旦出现异常,程序运行就终止了
B. 如果一个方法申明将抛出某个异常,它就必须真的抛出那个异常
C. 在catch子句中匹配异常是一种精确匹配
D. 可能抛出系统异常的方法是不需要申明异常的
//异常的存在和出现是可以预见的:1.严重性:一旦异常发生,程序可能终止或者运行的结果不可预知
B:如果方法申明抛出某个异常,如果没有捕获该异常,则不抛出
C:不精确匹配的原因是:发生异常时,先不区分异常,直接捕获所有异常的父类exception
11.. 如下代码:
public class Foo {
public static void main(String[] args) {
try {
return;
} finally {
System.out.println( "Finally" );
}
}
}
输出结果是什么? A
A. Finally
B.编译失败
C. 代码正常运行但没有任何输出.
D. 运行时抛出异常
12. jsp指令中isELIgnored="boolean"的意思是(C )
A.决定是否实现Servler的单线程模式,
B.决定改页面是否是一个错误处理页面,
C.决定是否支持EL表示,
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>时间格式化在Tomcat5.5下不管用,提示:Unable to convert string "${deployTime}" to class "java.util.Date" for attribute "value": Property Editor not registered with the PropertyEditorManager
上网查找资料后得知:主要原因是EL表达式无法被解析到.
其实从后台取值并传值到前台来根本就没有错,而前台JSP页面EL表达式无效,解析不到EL表达式,引起的原因是web.xml中:
里面的web-app_2_5.xsd,就是这个引起的,在web-app_2_4.xsd中就不会出现这种问题(这个版本的isELIgnored默认设置为false)。
在不改变web.xml2.5版本的情况下解决办法是:在jsp页面头加:<%@page isELIgnored="false"%> 问题得以解决。
还有就是:<%@page isELIgnored="false"%>的优先级要高于web.xml中的设置,所以在JSP中的设置会盖掉web.xml中的设置.
13. 在WEB-INF目录下,必须存放的文件为:B
A.class文件
B.web.xml
B.jar文件
D.html文件
14. 下面哪个不是JAVA关键字D
A integer
B double
C float
D default
default:java访问控制关键字,只适用于本类
15. 哪个语句创建了一个数组实例? A
A. int[] ia = new int [15];
B. float fa = new float [20];
C. char[] ca = “Some String”;
D. int ia [][] = {4, 5, 6} {1, 2, 3};
16.. 下列关于构造方法的叙述中,错误的是(c )
A. Java语言规定构造方法名与类名必须相同
B. Java语言规定构造方法没有返回值,但不用vold声明
C. Java语言规定构造方法不可以重载
D. Java语言规定构造方法只能通过new自动调用
Java语言规定构造方法可以重载,包括构造方法和非静态方法,只要满足需求即可
重写,覆写:针对具有继承关系的类或者多个类,不包括构造方法,不包括静态方法,不包括final方法,(当然父类的方法都不能是private声明的)
17. 构造函数何时被调用( b)
A.类定义时 B.创建对象时
C.调用对象方法时 D.使用对象的变量时
18. Java语言中下面哪个可以用作正确的变量名称(b )
A、3D B、name C、extends D、implements
变量名称由下划线,字母,$和数字组成,首字母是英文字母,$和下划线
并且java名不要使用java关键字
19. 下面哪一项不是Java类访问控制关键字( c )
A. public B. protected
C. this D. private
Java访问控制关键字:Public,protected,default只在包内部被访问,private只在类内部被访问,final初始化之后不能被改变,可提高运行速度,static修饰内部类,方法,变量(节省内存)
20. 以下( B )是编写Servlet必须导入的包.
A.java.sql.* B.java.servlet.* C.java.util.* D.java.lang.*
java.lang包是Java基础语言包(其中lang是language(语言)的简写),该包中包含
Java语言所需要的基本的功能类、接口等信息,是进行Java语言编程的基础。
由于在进行Java语言编程时,该包的使用特别频繁,所以在Java语言中,该包是被
默认引入的。
java.util.*包:该包提供了包含集合框架、遗留的集合类、事件模型、日期和时间实施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)
Java.sql*:该包提供了使用java语言访问并处理数据源(通常是一个关系数据库)中的数据api
二:多选题
1. 下列属于jsp中注释的有( )
A.<%-- 与 --%>
B. /
C. /** 与 **/
/java注释有三种:1.// 2.注释若干行:/** 与 **/ 3。注释若干行/**
* .........
* .........
*/
2. 按照学生平均成绩(avg_grade) 将students表中的数据检索出来,下面SQL语句正确的是( acd )
A) SELECT * FROM students ORDER BY avg_grade
B) SELECT * FROM students GROUP BY avg_grade ASC //group by
C) SELECT * FROM students ORDER BY avg_grade DESC
D) SELECT * FROM students ORDER by avg_grade asc
//b:本题意为将students表中数据检索出来,但是b中以分组形式是错误的
3. 下列是jsp作用域的通信对象的有( ABC )
A.Session
B. application
C.pageContext
D:Cookie
jsp四大作用域: page,session,request,application
九大内置对象: request,response,out JSP页面向浏览器的输出结果,
Page jsp页面的servlet实例
pageContext JSP的运行环境,可以返回jsp访问的对象及属性
Session 会话,会话对象主要用于检索和存储数据
Application 存储了jsp页面的servlet以及在同一应用程序中的web组件的上下文信息
Config存取servlet实例的初始化参数
Exception 某个页面抛出异常时,转发至jsp错误de页面,只有在错误页面才能使用<%@page isErrorPage=”true”%>
4. 在接口中以下哪条定义是正确的? ( ab )
A. void methoda();
B. public double methoda();
C. public final double methoda();
D. static void methoda(double d1);
E. protected void methoda(double d1);
/**
public static final接口属性一定是常量
java当中的接口变量都是final修饰的常量,并且保证常量不能被实现类修改
接口只有public,adbstract,default,satatic and strictfp are permitted,
接口方法默认 public abstract
只有default,static修饰的方法,才能有方法体,也就是方法后面有{}
Default可以被重写覆盖,static只能接口类调用不可覆盖,strictfp不可使用
**/
5. 下面哪个语句正确地声明一个整型的二维数组?cde
A. int a[][] = new int[][];
B. int a[10][10] = new int[][];
C. int a[][] = new int[10][10];
D. int [][]a = new int[10][10];
E. int []a[] = new int[10][10];
//二维数组本质是以数组作为数组元素的数组,及“数组的数组”
Int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };五行,三列
二维数组定义:1.int[][] arr=new int[3][4]
6. 下面哪些不是java的简单数据类型? bc
A. short B. Boolean C. Double D. float
byte |
short |
int |
long |
float |
double |
char |
boolean |
Byte |
Short |
Integer |
Long |
Float |
Double |
Character |
Boolean |
7. 下面哪些语句能够正确地生成5个空字符串? AB
A.String a[]=new String[5];for(int i=0;i<5;a[i++]=“”);
B.String a[]={“”,“”,“”,“”,“”};
C.String a[5];
D.String[5]a;
E.String []a=new String[5];for(int i=0;i<5;a[i++]=null);
C,D:并未初始化值,所以五个字符串并未生成
E:a[i++]=null,null指的是0,将0的值赋给a[i++],是不能对a[i++]所引用的,所以报空指针
A:””意味讲一个空的字符串付给a[i++],此时a[i++]不为空,可以对a[i++]解引用的
8. 下列说法错误的有( bcd)
A. 数组是一种对象
B. 数组属于一种原生类
C. int number=[]={31,23,33,43,35,63}
D. 数组的大小可以任意改变
C:int []number={31,23,33,43,35,63}
B:数组是属于引用数据对象类型,因为数组需要分配堆栈空间
D:静态数组在定义的时候就确定了数组大小,无论在运行中对其做改变
9. 不能用来修饰interface的有( ACD)
A.private B.public C.protected D.Static
接口是给别人实现的,所以不能用static,和final
因为static和final修饰的不能被继承,只能用public
对其成员变量只能用public static final类型,并且需要赋值
10. 下列说法错误的有(ACD )
A. 在类方法中可用this来调用本类的类方法
B. 在类方法中调用本类的类方法时可直接调用
C. 在类方法中只能调用本类中的类方法
A 该题不严谨 错误:(类方法中不能用this,调用实例方法时,用对象调用即可,如果是main方法,不能用this调用)
D. 在类方法中绝对不能调用实例方法
C:在类方法中既能调用本类方法,用能实例化调用其他方法
D:只要实例化对象,就能调用实例方法
11. 如下代码
class A {
A() { }
}
class B extends A {
}
哪两个说明是正确的?BD
A. B类的构造器应该是 public.
B. B类的构造器应该是没有参数
C. B类的构造器应该调用this().
D. B类的构造器应该调用super().子类初始化的时候必须调用父类的构造方法,即使没有显示,仍然会调用父类的构造方法
13. 以下哪四个能使用throw抛出? ADEF
A. Error
B. Event
C. Object
D. Throwable:是java.lang包中专门处理异常的类,他有两个子类Error和Exception
E. Exception
F. RuntimeException
14. javax.Servlet的包中,属于类的是: bc
A.Servlet
B.GenericServlet
C.ServletException
D.ServletContext
ServletContext和ServletRequest是包下的接口
类GenericServlet继承了Servlet接口,
class ServletInputStream
//定义了一个输入流,用于由Servlet从中读取客户请求的二进制数据。
class ServletOutputStream
//定义了一个输出流,用于由Servlet向客户发送二进制数据。
class ServletException
//定义了一个当Servlet遇到问题时可以抛出的异常。
class UnavailableException
//定义了一种异常,用于由Servlet指明它永远或暂时不可用。
15.. 哪二种声明防止方法覆盖? BC
A、final void methoda() {}
B、void final methoda() {}
C、static void methoda() {}
D、static final void methoda() {}
final修饰的类不能被继承,修饰的方法不能被重写,修饰的变量值不能被修改
D:有final就不能有abstract,抽象方法就要子类进行重写,并且有抽象方法,就不应该有{}
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。
简答题:
Collection框架中实现比较要实现什么接口
comparable接口、comparator接口
.写一个算法对1,8,5,2,4,9,7进行顺序排列。(建议冒泡)
public class OrderbyArray {
//冒泡排序 Bubble Sort 最简单的排序方法是冒泡排序方法
public int[] orderArray(int[] array){
for(int i=0;i for(int j=i;j if(array[i]>array[j]){ int s = array[i]; array[i] = array[j]; array[j] = s; } } } return array; } public static void main(String[] args) { int [] array = {1,8,5,2,4,9,7}; OrderbyArray order = new OrderbyArray(); array = order.orderArray(array); } }