> 文章列表 > day25—选择题

day25—选择题

day25—选择题

文章目录

    • 1.下面有关JVM内存,说法错误的是(C)
    • 2.下面关于程序编译说法正确的是(C)
    • 3.下面那些情况可以终止当前线程的运行(B)
    • 4.下面程序的运行结果:(B)
    • 5.默认类型等价表示是哪一项(C)
    • 6.有以下类定义,运行结果是(B)

1.下面有关JVM内存,说法错误的是(C)

A 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C 方法区用于存储JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,是线程隔离

D 原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的

思路:程序计数器和栈都是线程私有的(线程隔离的);方法区和堆都是线程共享的

2.下面关于程序编译说法正确的是(C)

A java语言是编译型语言,会把java程序编译成二进制机器指令直接运行
B java编译出来的目标文件与具体操作系统有关
C java在运行时才进行翻译指令
D java编译出来的目标文件,可以运行在任意jvm上

思路:java是半编译半解释型语言; java编译出来的class文件(目标文件)与具体操作系统无关的,面向JVM的二进制文件;java编译时,把*.java编译成*.class文件,java运行时JVM实际上会把class文件翻译成操作系统能识别的机器码;JVM也是有版本的,例如JDK11的class文件,JDK8的JVM是无法运行的

3.下面那些情况可以终止当前线程的运行(B)

A 当一个优先级高的线程进入就绪状态时
B 抛出一个异常时
C 当该线程调用sleep()方法时
D 当创建一个新线程时

思路:线程的终止:正常终止:线程的任务执行完成;异常终止:线程执行过程中出现异常;其他线程的出现和状态不会影响当前线程的运行;调用该线程的sleep()方法会让线程出现阻塞状态,并不是终止线程的运行

4.下面程序的运行结果:(B)

public static void main(String args[]) {Thread t=new Thread(){public void run(){dianping();}};t.run();System.out.print("dazhong"); 
}
static void dianping(){System.out.print("dianping");
}

A dazhongdianping
B dianpingdazhong
C a和b都有可能
D dianping循环输出,dazhong夹杂在中间

思路:线程的启动不能直接调用run(),要调用thread类提供的start()方法,执行start方法才会启动一个子线程;调用run方法,没有启动新的线程,就和调用普通的方法一样;方法的执行都是先执行静态的方法,再执行普通方法

5.默认类型等价表示是哪一项(C)

public interface IService {String NAME="default";
}

A public String NAME=“default”;
B public static String NAME=“default”;
C public static final String NAME=“default”;
D private String NAME=“default”;

思路:接口中的变量都是全局变量(也就是被public static final 修饰的变量,这三个关键字是可以省略的)

6.有以下类定义,运行结果是(B)

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 编译能通过,但是没有输出结果

思路:继承抽象类就要重写其所有的抽象方法;父类Animal是抽象类;子类Cat不是抽象类但继承Animal,但没有重写Animal的所有抽象方法,所以cat不能编译