牛客网-Java专项练习06
答案设置为白色,框选即可显示
1.命令javac-d参数的用途是?()
A.指定编译后类层次的根目录
B.指定编译时需要依赖类的路径
C.指定编译时的编码
D.没有这一个参数
答案:A
解析:
javac -d 指定放置生成的类文件的位置
javac -s 指定放置生成的源文件的位置
2.下列代码执行结果为()
public static void main(String args[])throws InterruptedException{
Thread t=new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.print("2");
}
});
t.start();
t.join();
System.out.print("1");
}
A.21
B.12
C.可能为12,也可能为21
D.以上答案都不对
答案:A
解析:join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。
3.若需要定义一个类,下列哪些修饰符是允许被使用的?( )
A.static
B.package
C.private
D.public
答案:ACD
解析:普通类(外部类)用 public, abstract 和 final 修饰。内部类用 private, static, protected 修饰。
4.下列描述中,错误的是( )
A.java要求编程者管理内存
B.java的安全性体现在多个层次上
C.java中没有指针机制
D.java有多线程机制
答案:A
解析:Java与C++的区别在于:Java去除了指针的概念,使用引用,并且Java的内存管理不需要程序员来管理,由Java虚拟机来完成对内存的管理
4.下列说法正确的是( )
A.volatile,synchronized 都可以修改变量,方法以及代码块
B.volatile,synchronized 在多线程中都会存在阻塞问题
C.volatile能保证数据的可见性,但不能完全保证数据的原子性,synchronized即保证了数据的可见性也保证了原子性
D.volatile解决的是变量在多个线程之间的可见性、原子性,而sychroized解决的是多个线程之间访问资源的同步性
答案:C
解析:synchronized: 具有原子性,有序性和可见性,volatile:具有有序性和可见性(缺一个原子性)
5.以下代码将打印出
public static void main (String[] args) {
String classFile = "com.jd.". replaceAll(".", "/") + "MyClass.class";
System.out.println(classFile);
}
A.com. jd
B.com/jd/MyClass.class
C.///MyClass.class
D.com.jd.MyClass
答案:C
解析: 由于replaceAll方法的第一个参数是一个正则表达式,而".“在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成”/"。如果想替换的只是".",那么久要写成"\."。