Java选择题(二十九)

1.关键字()表明一个对象或变量的引用在初始化后不能被修改。

正确答案: B 你的答案: B (正确)
A.private
B.final
C.static
D.没有这种关键字

解释:
使用final关键字 修饰一个变量时,是指引用变量不能变 ,引用变量所指向的对象中的内容 还是可以改变的。

2.javac的作用是( )。

正确答案: A 你的答案: A (正确)
A.将源程序编译成字节码
B.将字节码编译成源程序
C.解释执行Java字节码
D.调试Java代码

解释:
javac 可以将java源文件编译为class字节码文件。
如 javac HelloWorld.java,运行javac命令后,如果成功编译没有错误的 话,会出现一个HelloWorld.class的文件。
java 可以运行class字节码文件。
如 java HelloWorld。注意java命令后面不要加.class

3.关于String、StringBuffer、StringBuilder以下说法错误的是

正确答案: C 你的答案: C (正确)
A.StringBuilder运行速度最快
B.StringBuffer是线程安全的
C.String的值是可变的
D.StringBuffer运行速度比String快

解释:
String是final修饰的,不可变
运行速度StringBuilder>StringBuffer>String
StringBuffer是线程安全的

Integer i = 42;
Long l = 42l;
Double d = 42.0;

下面为true的是

正确答案: G 你的答案: G (正确)
A.(i == l)
B.(i == d)
C.(l == d)
D.i.equals(d)
E.d.equals(l)
F.i.equals(l)
G.l.equals(42L)

解释:
1、基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true;

     int a = 220;

     Integer b = 220;

    System.out.println(a==b);//true

2、两个Integer类型进行“==”比较, 如果其值在-128至127 ,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关,这里不进行赘述。

    Integer c=3;
    Integer h=3;
    Integer e=321;
    Integer f=321;
    System.out.println(c==h);//true
    System.out.println(e==f);//false

3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true。

    Integer a=1;
    Integer b=2;
    Integer c=3;
    System.out.println(c.equals(a+b));//true

4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。

   int i=1;
    int j = 2;
    Integer c=3;
    System.out.println(c.equals(i+j));//true

5.以下代码段执行后的输出结果为

public class Test {
    public static void main(String args[]) {
        int i = -5;
        i =  ++(i++);
        System.out.println(i);
    }
}

正确答案: C 你的答案: C (正确)
A.-7
B.-3
C.编译错误
D.-5

解释:
java中的i++和++i在java语言层面上来看使用中间量机制,i=i++,i不变,i=++i相当于++i,而结合在一个语句里使用则会报错,因为++后应该跟变量。同理,i=(++i)++也是不对的

6.下列说法正确的有( )

正确答案: A C D 你的答案: A C D (正确)
A.构造方法的方法名必须与类名相同
B.构造方法也没有返回值,但可以定义为void
C.在子类构造方法中调用父类的构造方法,super() 必须写在子类构造方法的第一行,否则编译不通过
D.一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个默认的构造方法,这个构造方法不执行任何代码

解释:
B:
如果写成public void 类名(){} 这种格式的话。此时就相当与你重新定义了一个函数,不能起到构造函数的作用,调用这个类的时候不能自动执行构造函数里的代码。

7.下列哪些情况下会导致线程中断或停止运行( )

正确答案: B 你的答案: A B D (错误)
A.InterruptedException异常被捕获
B.线程调用了wait方法
C.当前线程创建了一个新的线程
D.高优先级线程进入就绪状态

解释:
A选项正确,Java中一般通过interrupt方法中断线程
B选项正确,线程使用了wait方法,会强行打断当前操作,进入阻塞(暂停)状态,然后需要notify方法或notifyAll方法才能进入就绪状态
C选项错误,新创建的线程不会抢占时间片,只有等当前线程把时间片用完,其他线程才有资格拿到时间片去执行。
D选项错误,调度算法未必是剥夺式的,而准备就绪但是还没有获得CPU,它的权限更高只能说明它获得CPU被执行的几率更大而已

8.下面有关java classloader说法正确的是()?

正确答案: A C D 你的答案: A C D (正确)
A.ClassLoader就是用来动态加载class文件到内存当中用的
B.JVM在判定两个class是否相同时,只用判断类名相同即可,和类加载器无关
C.ClassLoader使用的是双亲委托模型来搜索类的
D.Java默认提供的三个ClassLoader是Boostrap ClassLoader,Extension ClassLoader,App ClassLoader
E.以上都不正确

解释:
JVM根据两个方面判断两个类是否相同:一是类的全称;另一个是类加载器.

即使类的全称相同,而使用的加载器不同那Class对象也是不同的.

9.对于线程局部存储TLS(thread local storage),以下表述正确的是

正确答案: A B D 你的答案: B C (错误)
A.解决多线程中的对同一变量的访问冲突的一种技术
B.TLS会为每一个线程维护一个和该线程绑定的变量的副本
C.每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了
D.Java平台的java.lang.ThreadLocal是TLS技术的一种实现

解释:
ThreadLocal可以给一个初始值,而每个线程都会获得这个初始化值的一个副本,这样才能保证不同的线程都有一份拷贝。ThreadLocal 不是用于解决共享变量的问题的,不是为了协调线程同步而存在,而是为了方便每个线程处理自己的状态而引入的一个机制.

10.以下说法哪个是正确的()

正确答案: A B C D 你的答案: A B (错误)
A.IOException在编译时会被发现
B.NullPointerEception在编译时不被发现
C.SQLException在编译时会被发现
D.FileNotFoundException在编译时会被发现

解释:

Java的异常分为两种,一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(CheckedException)
1、运行时异常不需要程序员去处理,当异常出现时,JVM会帮助处理。常见的运行时异常有:
ClassCastException(类转换异常)
ClassNotFoundException
IndexOutOfBoundsException(数组越界异常)
NullPointerException(空指针异常)
ArrayStoreException(数组存储异常,即数组存储类型不一致)
还有IO操作的BufferOverflowException异常
2、非运行异常需要程序员手动去捕获或者抛出异常进行显示的处理,因为Java认为Checked异常都是可以被修复的异常。常见的异常有:
IOException
SqlException

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风儿吹吹吹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值