编程语言爱好者码农崛起(iOS、Android、java、c++等)Java入门基础

NowCoder-Java-Note(三)

2017-12-05  本文已影响12人  路卡利欧Mega
001.jpg

一、 以下的变量定义语句中,合法的是()

A.byte=128
B.boolean=null
C.long a=123L
D.double=0.9239d

解析:

答案:C

二、若在某一个类定义中定义有如下的方法: abstract void performDial( );该方法属于()

A.本地方法
B.最终方法
C.解态方法
D.抽象方法

解析:

答案:D

三、 有以下程序片段,下列哪个选项不能插入到行 1 。( )。

1.
2.public class A {
3.    //do sth
4.} 

A.public class MainClass{ }
B.package mine;
C.class ANotherClass{ }
D.import java.util.*;

解析:

答案:A

strlen.gif

四、执行如下程序,输出结果是( )

public class Test_Thread {
    public static void main(String[] args) {
        Test mv = new Test();
        Thread t1 = new ThreadExample(mv);
        Thread t2 = new ThreadExample(mv);
        Thread t3 = new ThreadExample(mv);
        t1.start();
        t2.start();
        t3.start();
    }
}
class Test{
    private int data;
    int result = 0;
    public void m(){
        result += 2;
        data += 2;
        System.out.print(result + "  " + data);
    }
}
class ThreadExample extends Thread{
    private Test mv;
    public ThreadExample(Test mv) {
        this.mv = mv;
    }
    @Override
    public void run() {
        synchronized (mv) {
            mv.m();
        }
    }
}

A.0 22 44 6
B.2 42 42 4
C.2 24 46 6
D.4 44 46 6

解析:

Test mv =newTest()声明并初始化对data赋默认值
使用synchronized关键字加同步锁线程依次操作m()
t1.start();使得result=2,data=2,输出即为2 2
t2.start();使得result=4,data=4,输出即为4 4
t3.start();使得result=6,data=6,输出即为6 6
System.out.print(result +" "+ data);是print()方法不会换行,输出结果为2 24 46 6

答案:C

五、以下哪项不属于java类加载过程?

A.生成java.lang.Class对象
B.int类型对象成员变量赋予默认值
C.执行static块代码
D.类方法解析

解析:
类加载过程 :

引用内容链接:
http://blog.csdn.net/u013256816/article/details/50829596

选项 :

答案:B

六、下面哪个语句是创建数组的正确语句?( )

A.float f[][] = new float[6][6];
B.float []f[] = new float[6][6];
C.float f[][] = new float[][6];
D.float [][]f = new float[6][6];
E.float [][]f = new float[6][];

解析:

答案:A B D E

引用内容链接:
https://www.cnblogs.com/bewolf/p/4321642.html

七、下面哪些属于JSP内置对象及方法?

A.request
B.out
C.application
D.config

解析:
JSP 有 9 个内置对象:

答案:A B C D

八、final、finally和finalize的区别中,下述说法正确的有?

A.final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
B.finally是异常处理语句结构的一部分,表示总是执行。
C.finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。
D.引用变量被final修饰之后,不能再指向其他对象,它指向的对象的内容也是不可变的。

解析:

答案:A B

九、下列方法中哪个是线程执行的方法? ()

A.run()
B.start()
C.sleep()
D.suspend()

解析:
注:线程的生命周期及五种基本状态:

关于Java中线程的生命周期,首先看一下下面这张较为经典的图:


线程的生命周期
  1. 新建状态(New):当线程对象创建后,即进入了新建状态,如:
    Thread t = new MyThread();

  2. 就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;

  3. 运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就 绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;

  4. 阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才 有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为三种:
    1.等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;
    2.同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;
    3.其他阻塞 -- 通过调用线程的sleep()join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

  5. 死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。
    引用内容链接:
    https://www.cnblogs.com/lwbqqyumidi/p/3804883.html

答案:A

十、以下哪些类是线程安全的()

AVector
B.HashMap
C.ArrayList
D.StringBuffer
E.Properties

解析:
java中的线程安全是什么:
线程安全一般会涉及到synchronized

答案:A D E

上一篇 下一篇

猜你喜欢

热点阅读