1.下面哪个不属于HttpServletResponse接口完成的功能?
A.设置HTTP头标
B.设置cookie
C.读取路径信息
D.输出返回数据
解:C,
分析:本题考查Java Servlet的request和response的知识点。
A:设置HTTP头标
response.setHeader("Refresh","3"); //三秒刷新页面一次
B:设置cookie
Cookie cookie = new Cookie("name","eden");
response.addCookie(cookie);
C(错误):读取路径信息,request读取路径信息
//从request获取各种路径总结
request.getRealPath("url"); // 虚拟目录映射为实际目录
request.getRealPath("./"); // 网页所在的目录
request.getRealPath("../"); // 网页所在目录的上一层目录
request.getContextPath(); // 应用的web目录的名称
D:输出返回数据
HttpServleteResponse.getOutputStream().write();
2.判断对错。在java的多态调用中,new的是哪一个类就是调用的哪个类的方法。
解:错,如子类继承父类,但是没有实现父类的方法,当进行向上转型赋值时,调用的方法就是父类的
3.
public boolean returnTest()
{
try
{
return true;
}
catch (Exception e)
{
}
finally
{
return false;
}
}
以下代码返回值是什么?
解:false,记住一条:无论如何都会执行finally中的代码。
4.有以下类定义:
abstract class Animal{
abstract void say();
}
public class Cat extends Animal{
public Cat(){
System.out.printf("I am a cat");
}
public static void main(String[] args) {
Cat cat=new Cat();
}
}
运行后:
A.I am a cat
B.Animal能编译,Cat不能编译
C.Animal不能编译,Cat能编译
D.编译能通过,但是没有输出结果
解:B,当一个实体类继承一个抽象类,必须实现抽象类中的抽象方法,所以cat类编译不通过
5.有以下代码:
class A{
public A(String str){
}
}
public class Test{
public static void main(String[] args) {
A classa=new A("he");
A classb=new A("he");
System.out.println(classa==classb);
}
}
请问输出的结果是:
A.false
B.true
C.报错
解:A,== 表示的是否指向的是同一个内存。
System.out.println(classa.equals(classb));
如果这样输出, 答案也是错误的; 因为子类没有覆盖Object的equals()方法,而默认调用==的这个方法,所以判断两个对象是否相等需要覆盖equals()方法和hashcaode()方法。
6.下面哪一项不是加载驱动程序的方法?
A.通过DriverManager.getConnection方法加载
B.调用方法 Class.forName
C.通过添加系统的jdbc.drivers属性
D.通过registerDriver方法注册
解:A,DriverManager.getConnection方法返回一个Connection对象,这是加载驱动之后才能进行的
拓展:
加载驱动方法:
1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
2.DriverManager.registerDriver(new com.mysql.jdbc.Driver());
3.System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
7.下面有关java和c++的描述,错误的是?
A.java是一次编写多处运行,c++是一次编写多处编译
B.c++和java支持多重继承
C.Java不支持操作符重载,操作符重载被认为是c++的突出特征
D.java没有函数指针机制,c++支持函数指针
解:B,Java不支持多继承
拓展:
Java没有指针的概念,被封装起来了,而C++有;Java不支持类的多继承,但支持接口多继承,C++支持类的多继承;C++支持操作符重载,Java不支持;Java的内存管理比C++方便,而且错误处理也比较好;C++的速度比Java快;C++更适用于有运行效率要求的情况,Java适用于效率要求不高,但维护性要好的情况。
8.String str = new String(“abc”),“abc”在内存中是怎么分配的?
A.堆
B.栈
C.字符串常量区
D.寄存器
解:AC,
堆和字符串常量池中,当你new String(“abc”)时,其实会先在字符串常量区生成一个abc的对象,然后new String()时会在堆中分配空间,然后此时会把字符串常量区中abc复制一个给堆中的String,故abc应该在堆中和字符串常量区。(这题不严谨,Java7中已经把常量池引进堆中了)
9.下面描述属于java虚拟机功能的是?
A.通过 ClassLoader 寻找和装载 class 文件
B.解释字节码成为指令并执行,提供 class 文件的运行环境
C.进行运行期间垃圾回收
D.提供与硬件交互的平台
解:ABCD,ABC不解释,D:虚拟机是运行在操作系统之上的,不与硬件交互。
10.下列选项中是正确的方法声明的是?()
A.protected abstract void f1();
B.public final void f1() {}
C.static final void fq(){}
D.private void f1() {}
解:ABCD,
java中抽象类中的抽象方法要么是public 要么是protect 不能是private
接口中的方法 要么是abstract的, 要么是public的, 不加public 默认是public的。
c++中没有abstract关键字。
拓展:
- 对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。
- 对于protected修饰符,它主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。
- 对于default来说,有点的时候也成为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用protected修饰的成员也可以。
- 对于private来说,它的访问权限仅限于类的内部,是一种封装的体现,例如,大多数的成员变量都是修饰符为private的,它们不希望被其他任何外部的类访问。