1.(单选题)以下代码的输出结果是()
public class Test {
public static void main(String[] args) {
String str = NULL;
System.out.println(str);
}
}
A.NULL
B.代码不能通过编译
C.没有输出结果
D.运行时出错
【正确答案】B。
【答案解析】String类型变量取值应为小写null或其他用""双引号括起来的内容。若为小写的null,输出也为null。
2.(单选题)以下程序运行结果是()
public class foo {
static String s;
public static void main (String[]args) {
System.out.println ("s=" + s);
}
}
A.输出结果为"s="
B.输出结果为"s=null"
C.编译出错,因为 s 没有初始化。
D.编译出错,因为 s 没有被定义。
【正确答案】B
【答案解析】String 为引用数据类型,引用类型数据成员的默认值为 null。
package string;
public class StringDemo2 {
String str;
static String s;
public static void main(String[] args) {
System.out.println(s);//null
System.out.println(new StringDemo2().str);//null
}
}
3.(单选题)下面代码的执行结果是( )
import java.util.*;
public class ShortSet{
public static void main(String args[]){
Set<Short> s=new HashSet<Short>();
for(Short i=0;i<100;i++) {
s.add(i);
s.remove(i-1);
}
System.out.println(s.size());
}
}
A.1
B.100
C.Throws Exception.
D.None of the Above.
【正确答案】B
【答案解析】i是Short类型i-1是int类型,其包装类为 Integer,所以s.remove(i-1);不能移除Set集合中Shor类型对象。
4.(单选题)关于以下代码描述正确的有( )
public class Cats {
public static void main(String args[]) {
List<Cat> cats = new ArrayList<Cat>();
cats.add(new Cat());
Animal b = new Animal();
Cat a = null;
if(b instanceof Animal)
a = (Cat)b;
if(a != null)
cats.add(a);
System.out.println(cats.size() +"cats");
}
}
class Animal {}
class Cat extends Animal{}
A.编译失败
B.输出1 cats
C.输出2 cats
D.运行时抛出异常
【正确答案】D
【答案解析】a = (Cat)b;处抛出java.lang.ClassCastException异常,b为Animal类型,并且具体引用对象是Animal对象,不能强转成Cat类型。如果把Animal b = new Animal();改为Animal b = new Cat();向上造型,就可以输出 2 cats了。最后强调一下,没有向上造型就没有向下造型。
5.(单选题)请选出下列正确的答案( )
1. import java.util.*;
2. public class WrappedString {
3. private String s;
4. public WrappedString(String s) { this.s = s; }
5. public static void main(String[] args) {
6. HashSet<Object> hs = new HashSet<Object>();
7. WrappedString ws1 = new WrappedString("aardvark");
8. WrappedString ws2 = new WrappedString("aardvark");
9. String s1 = new String("aardvark");
10. String s2 = new String("aardvark");
11. hs.add(ws1); hs.add(ws2); hs.add(s1); hs.add(s2);
12. System.out.println(hs.size()); } }
A.1
B.4
C.2
D.3
【正确答案】D
【答案解析】HashSet集合里面存储的元素是无序的且不重复的,本题中的是s1和s2两个对象在底层判断时返回的相关信息被视为相同元素,所以最终结果集合中值有3个元素。存的两个对象为不同的引用,不算重复。
6.(单选题)下面哪个是链式存储并快速顺序(不需要随机访问)访问的集合类型( )
A.java.util.LinkedList
B.java.util.Queue
C.java.util.ArrayList
D.java.util.LinearList
【正确答案】B
【答案解析】请参考集合队列的结构特点及元素的存取
7.(多选题)关于 Java 语言,下列描述正确的是( )
A.switch不能够作用在String类型上
B.List, Set, Map都继承自Collection接口
C.Java语言支持goto语句
D.GC是垃圾收集器,程序员不用担心内存管理
【正确答案】A,D
【答案解析】B. Map没有继承Collection接口; C. java不支持goto语句。
8.(单选题)关于 sleep()和 wait(),以下描述错误的一项是( )
A.sleep 是线程类(Thread)的方法,wait 是 Object 类的方法
B.sleep 不释放对象锁,wait 放弃对象锁
C.sleep 暂停线程、但监控状态仍然保持,结束后会自动恢复
D.wait 后进入等待锁定池,只有针对此对象发出 notify 方法后获得对象锁进入运行状态
【正确答案】D
【答案解析】sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控 状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。 wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对 象锁进入运行状态。
9.(单选题)方法 resume()负责恢复哪些线程的执行( )
A.通过调用 stop()方法而停止的线程。
B.通过调用 sleep()方法而停止的线程。
C.通过调用 wait()方法而停止的线程。
D.通过调用 s