3-选择题练手

文章讨论了Java编程中抽象类的使用规则,强调子类必须实现抽象类的所有抽象方法。同时,详细介绍了JVM内存模型,包括程序计数器、虚拟机栈、方法区和堆的特性,指出方法区是线程共享的。此外,文章还涉及了逻辑运算、输入流、程序编译过程以及线程控制和接口默认方法的语法。最后,探讨了方法重载的规范。
摘要由CSDN通过智能技术生成

1.有以下类定义:

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

:一个实体类继承一个抽象类,必须实现抽象类中的抽象方法。

2.下列有关JVM内存,说法错误的是

A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的

B.虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的

C.方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的

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

:C

:方法区是线程共享的。

3.下列程序段的输出结果是

public void complicatedexpression_r() {
    int x=20, y=30;
    boolean b;
    b = x > 50 && y > 60 || x > 50 && y < -60 || x < -50 && y > 60 || x < -50 && y < -60;
    System.out.println(b);
}
A. true
B.false
C. 1
D. 0
:B
:短路运算
4.输入流将数据从文件,标准输入或其他外部输入设备中加载到内存,在 java 中其对应于抽象类()及其子类。
A. java.io.InputStream
B. java.io.OutputStream
C. java.os.InputStream
D. java.os.OutputStream
A
 
5.以下程序的输出结果是
public class Print {
    static boolean out(char c) {
        System.out.print(c);
        return true;
    }
    public static void main(String[] argv) {
        int i = 0;
        for(out('A'); out('B') && (i < 2); out('C')){
            i++;
            out('D');
        }
    }
}

A. ABDCBDCB

B. BCDABCD

C.编译错误

D. 运行错误
:A
:考察for循环语句
6.下面关于程序编译说法正确的是
A. java语言是编译型语言,会把java程序编译成二进制机器指令直接运行
B. java编译出来的目标文件与具体操作系统有关
C. java在运行时才进行翻译指令
D. java编译出来的目标文件,可以运行在任意jvm上
C
A:java编译成的是字节码(而不是直接的二进制机器码),被JVM翻译为机器码,所谓的一次编程多平台应用。
B:java源文件生成的是class文件,与系统无关。
C:字节码和机器码不是一回事,java运行时字节码才会被jvm翻译成机器码,所以说java是解释性语言。
D:jvm的版本是会影响的。
7.下面那些情况可以终止当前线程的运行
A. 当一个优先级高的线程进入就绪状态时
B. 抛出一个异常时
C. 当该线程调用sleep()方法时
D. 当创建一个新线程时
B
优先级高的并不一定会马上执行。
sleep方法阻塞一个线程并不会终止。
创建一个新的线程时也不会终止另一个线程。
当抛出一个异常后程序会结束,所以线程也会被终止。
终止:这个线程不会再进入“就绪态”,宣告死亡,即“死亡状态”。
阻塞:进入阻塞态的线程还可以再进入“就绪态”,等待下一次 CPU 时间
8.下面程序的运行结果
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夹杂在中间
:B
:本题中,线程t并没有启动,只是调用了run()方法,程序中运行的线程依然只有一个,那么程序会按照顺序执行,即先运行run(),run()方法调用dianping()方法输出"dianping",程序继续向下执行输出"dazhong"。如果本题中t线程调用start()方法,就会出现C选项的情况。

9.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”;
:C
:接口中的变量默认是public static final 的,方法默认是public abstract 的。

10.类Test1定义如下,将以下哪种方法插入行3是不合法的

public class Test1 { //1
public float aMethod(float a,float b) {} //2
   //3
} //4
A. public int aMethod(int a,int b){}
B. private float aMethod(int a,int b,int c){}
C. public float aMethod(float a,float b){}
D. public float aMethod(float a,float b,float c){}
:C
:考察方法重载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值