1.以下语句的执行结果是什么?
1+”10”+3+”2”
正确答案: A 你的答案: A (正确)
A.”11032”
B.“16”
C.16
D.“32101”
解释:在遇到string类型之前,int间使用“+”还是表示数值的相加,但是遇到第一个string后,后面就都是按string类型来了,变成字符串的拼接
2.针对下面的代码块,哪个equal为true:()
String s1 = "xiaopeng" ;
String s2 = "xiaopeng" ;
String s3 =new String (s1);
正确答案: A 你的答案: A (正确)
A.s1 == s2
B.s1 = s2
C.s2 == s3
D.都不正确
String s 1 = “xiaopeng”,这种定义字符串的方式,首先看看字符串常量池中是否有“xiaopeng"如果有就就直接从常量池中取,没有则将“xiaopeng"放到常量池中。String s2 = 'xiaopeng",常量池中有”xiaopeng",直接取值。string s3 = new String(“xiaopeng”);直接在堆中产生一个字符串“xiaopeng”.所以s1和s2地址一样,和s3地址不一样
3.java如何返回request范围内存在的对象?
正确答案: B 你的答案: C (错误)
A.request.getRequestURL()
B.request.getAttribute()
C.request.getParameter()
D.request.getWriter()
解释:
request.getAttribute()方法返回request范围内存在的对象。
request.getParameter()方法是获取http提交过来的数据。getAttribute是返回对象,getParameter返回字符串。
4.下面的程序 编译运行后,在屏幕上显示的结果是()
复制代码
public class Test {
public static void main(String args[]) {
int x, y;
x = 5 >> 2;
y = x >>> 2;
System.out.println(y);
}
}
正确答案: A 你的答案: A (正确)
A.0
B.2
C.5
D.80
解释:
Java中的位运算符:>> 表示右移,如果该数为正,则高位补0,若为负数,则高位补1;
>>> 表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。
5.下面这段java代码,当 T 分别是引用类型和值类型的时候,分别产生了多少个 T对象和T类型的值()
T t = new T();(值类型时:T t;)
Func(t);
Func 定义如下:
public void Func(T t) { }
正确答案: D 你的答案: D (正确)
A.1 1
B.2 1
C.2 2
D.1 2
解释:引用类型作为函数的参数时,复制的是引用的地址,不会产生一个新的T;而如果T是值类型,其作为函数实参时会复制其值,也就是产生了一个新的T。所以D选项正确
6.下面叙述那个是正确的?()
正确答案: B 你的答案: B (正确)
A.java中的集合类(如Vector)可以用来存储任何类型的对象,且大小可以自动调整。但需要事先知道所存储对象的类型,才能正常使用。
B.在java中,我们可以用违例(Exception)来抛出一些并非错误的消息,但这样比直接从函数返回一个结果要更大的系统开销。
C.java接口包含函数声明和变量声明。
D.java中,子类不可以访问父类的私有成员和受保护的成员。
解释:
A.vector是线程安全的ArrayList,在内存中占用连续的空间。初始时有一个初始大小,当数据条数大于这个初始大小后会重写分配一个更大的连续空间。如果Vector定义为保存Object则可以存放任意类型。B.try{}catch{}会增加额外的开销
C.接口中声明的’变量’必须为public final static,所以为常量
D.子类可以访问父类受保护的成员
7.Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述正确的是()
正确答案: A B D 你的答案: A B D (正确)
A.ArrayList和LinkedList均实现了List接口
B.ArrayList的访问速度比LinkedList快
C.添加和删除元素时,ArrayList的表现更佳
D.HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值
解释:
ArrayList插入和现有项的删除开销很大,除非在末端
LinkedList插入和删除开销很小
ArrayList和LinkedList都是实现了List接口
HashMap可以用null值和空字符串作为K,不过只能有一个
8.下面的对象创建方法中哪些会调用构造方法 ()?
正确答案: A C 你的答案: A C (正确)
A.new语句创建对象
B,调用Java.io.ObjectInputStream的readObject方法
C.java反射机制使用java.lang.Class或java.lang.reflect.Constructor的newInstance()方法
D.调用对象的clone()方法
解释:
构造函数的作用是完成对象的初始化。当程序执行到new操作符时, 首先去看new操作符后面的类型,因为知道了类型,才能知道要分配多大的内存空间。分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化。而选项B、D中,对象的初始化并不是通过构造函数完成的,而是读取别的内存区域中的对象的各个域来完成。
9.以下关于final关键字说法错误的是
正确答案: A C 你的答案: A C (正确)
A.final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性
B.final修饰的类肯定不能被继承
C.final修饰的方法不能被重载
D.final修饰的变量不允许被再次赋值
解释:
final修饰类、方法、属性!不能修饰抽象类,因为抽象类一般都是需要被继承的,final修饰后就不能继承了。
final修饰的方法不能被重写而不是重载!
final修饰属性,此属性就是一个常量,不能被再次赋值!
10.执行如下程序代码
char chr = 127;
int sum = 200;
chr += 1;
sum += chr;
后,sum的值是()
备注:同时考虑c/c++和Java的情况的话
正确答案: A C 你的答案: B C (错误)
A.72
B.99
C.328
D.327
解释:
java中只有byte, boolean是一个字节, char是两个字节, 所以对于java来说127不会发生溢出, 输出328
但是对于c/c++语言来说, char是一个字节, 会发生溢出, 对127加一发生溢出, 0111 1111 --> 1000 0000, 1000 0000为补码-128, 所以结果为200-128=72