- 下面有关servlet的层级结构和常用的类,说法正确的有?
- GenericServlet类:抽象类,定义一个通用的、独立于底层协议的Servlet。
- 大多数Servlet通过从GenericServlet或HttpServlet类进行扩展来实现
- ServletConfig接口定义了在Servlet初始化的过程中由Servlet容器传递给Servlet得配置信息对象
- HttpServletRequest接口扩展ServletRequest接口,为HTTP Servlet提供HTTP请求信息
正确答案ABCD 答案解析
- 下面有关java基本类型的默认值和取值范围,说法错误的是
- 节型的类型默认值是0,取值范围是-2^7— 2^7-1
- boolean类型默认值是false,取值范围是true/false
- 字符型类型默认是0,取值范围是-2^15 —2^15-1
- long类型默认是0,取值范围是-2^63— 2^63-1
正确答案C 答案解析 补充一点是byte的范围是-128~127 字符型没有负号取值,正确的取值范围是0~2^16-1
- A 是抽象父类或接口, B , C 派生自 A ,或实现 A ,现在 Java 源代码中有如下声明
A a0=new A();
A a1 =new B();
A a2=new C();
问以下哪个说法是正确的?( )
- 第1行不能通过编译
- 第1、2行能通过编译,但第3行编译出错
- 第1、2、3行能通过编译,但第2、3行运行时出错
- 第1行、第2行和第3行的声明都是正确的
正确答案A 答案解析
第1行不能通过编译,抽象类和接口不能实例化
如果删除第1行,第2行和第3行可以通过编译并不会报错,BC是子类的情况下
BC是接口的情况下,编译不能通过
- 下列程序输出的结果是
class TestDemo {
public static String output = "";
public static void foo(int i) {
try {
if (i == 1) {
throw new Exception();
}
} catch (Exception e) {
output += "2";
return;
} finally {
output += "3";
}
output += "4";
}
public static void main(String[] args) {
foo(0);
foo(1);
System.out.println(output);
}
}
- 342
- 3423
- 34234
- 323
正确答案B 答案解析
首先程序执行拼串操作
foo(0)不满足try条件,执行finally语句,执行完finally,执行外部的代码
输出34
foo(1)会执行catch语句的拼串,执行完catch语句,执行finally语句,执行完finally语句才执行catch语句的return语句,如果把try块的代码改成return,程序就会输出343
- 下面代码输出是什么
class Base {
private String baseName = "base";
public Base() {
callName();
}
public void callName() {
System.out.println(baseName);
}
static class Sub extends Base {
private String baseName = "sub";
public void callName() {
System.out.println(baseName);//sub
}
}
public static void main(String[] args) {
Base b = new Sub();
}
}
- null
- sub
- base
正确答案A 答案解析
new Sub();
在创造派生类的过程中首先创建基类对象,然后才能创建派生类
创建基类即默认调用Base()方法,在方法中调用callName()方法,由于派生类中存在此方法,则被调用的callName()方法是派生类中的方法
此时派生类还未构造,所以变量baseName的值为null
如果去掉无参构造的方法调用代码,程序什么都不会输出,但也不会报错
- 以下哪些继承自 Collection 接口
- List
- Set
- Map
- Array
正确答案AB 答案解析
需要熟悉继承关系
- 关于ASCII码和ANSI码,以下说法不正确的是()
- 标准ASCII只使用7个bit
- 在简体中文的Windows系统中,ANSI就是GB2312
- ASCII码是ANSI码的子集
- ASCII码都是可打印字符
正确答案D 答案解析
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)
ANSI(American National Standards Institute,美国国家标准学会)
ASCII码包含一些特殊空字符,所以不能打印
0-31是控制字符,不能打印
ASCII标准是7bit,扩展是8bit
- 在JDK1.7中,下述说法中抽象类与接口的区别与联系正确的有哪些?
- 抽象类中可以有普通成员变量,接口中没有普通成员变量。
- 抽象类和接口中都可以包含静态成员常量。
- 一个类可以实现多个接口,但只能继承一个抽象类
- 抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。
正确答案ABCD 答案解析
记住就行了,可以手写代码测试以下,注意B选项的常量
- 请问下列代码最后打印出来的是什么?()
public class Test{
private static int i=1;
public int getNext(){
return i++;
}
public static void main(String [] args){
Test test=new Test();
Test testObject=new Test();
test.getNext();
testObject.getNext();
System.out.println(testObject.getNext());
}
}
- 2
- 3
- 4
- 5
正确答案B 答案解析
return i++, 先返回i,然后i+1;
第一次调用getNext()方法时,返回的是1,但此时i=2;
第二次调用 getNext()方法时,返回的是2,但此时i=3;
第三次调用 getNext()方法时,返回的是3,但此时i=4;
该题主要考察的是static属性和i++操作。
因为i是static的,是类属性,所以不管有多少对象,都共用的一个变量。
这里getNext()方法被调用了三次,所以进行了三次i++操作。
- @SuppressWarnings(“deprecation”)的功能是什么?
- 屏蔽不赞同使用的类和方法的警告
- 屏蔽在强制类型转换的时候编译器给出的警告
- 关闭所有警告信息
- 当在可序列化的类上缺少serialVersionUID定义的警告
正确答案A 答案解析
1.Java三大注解分别是 @Override @Deprecated @Suppresswarnings
2.@Override 注解表名子类中覆盖了超类中的某个方法,如果写错了覆盖形式,编译器会报错
3.@Deprecated 表明不希望别人在以后使用这个类,方法,变量等等
4.@Suppresswarnings 达到抑制编译器产生警告的目的,但是不建议使用,因为后期编码人员看不懂编译器提示的警告,不能更好的选择更好的类去完成任务