• java基础10题


    1.已知 声明并初始化二维数组
    int a[ ][2] = {{1, 2}, {3, 4}, {5, 6}}
    则 a[1][1] 的值为()
    2.java语言的下面几种数组复制方法中,哪个效率最高?
    A.for 循环逐一复制
    B.System.arraycopy
    C.Array.copyOf
    D.使用clone方法
    3.下列哪个选项是合法的标识符?()
    A.123
    B._name
    C.class
    D.first
    4.不能用来修饰interface的有( )(仅限外部接口)
    A.private
    B.public
    C.protected
    D.static
    5.以下哪几种方式可用来实现线程间通知和唤醒:( )
    A.Object.wait/notify/notifyAll
    B.ReentrantLock.wait/notify/notifyAll
    C.Condition.await/signal/signalAll
    D.Thread.wait/notify/notifyAll
    6.若有定义:byte[]x={11,22,33,﹣66};其中0≤k≤3,则对x数组元素错误的引用是()
    A.x[5-3]
    B.x[k]
    C.x[k+5]
    D.x[0]
    7.正则表达式语法中 \d 匹配的是?()
    A.数字
    B.非数字
    C.字母
    D.空白字符
    8.

    static String str0="0123456789";
    static String str1="0123456789";
    String str2=str1.substring(5);
    String str3=new String(str2);
    String str4=new String(str3.toCharArray());
    str0=null;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    假定str0,…,str4后序代码都是只读引用。
    Java 7中,以上述代码为基础,在发生过一次FullGC后,上述代码在Heap空间(不包括PermGen)保留的字符数为()
    9.Integer i = 42;
    Long l = 42l;
    Double d = 42.0;
    下面返回是true的是
    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)
    10.下面哪个语句是创建数组的正确语句?( )
    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][];
    (1)二维数组: 0 1
    0 {1,2}
    1 {3,4}
    2 {5,6} 所以a[1][1]=4
    (2)复制的方法:
    1.for循环逐一复制
    2.System.arraycopy
    3.Arrays.copyOf
    4.使用Clone方法
    使用效率:System.arraycopy>clone>Arrays.copyOf>for逐一循环
    (3)选BD
    标识符:
    1. 只能由数字,字母,符号(有且仅有_和$两个)组成。
    2. 数字不能作为标识符的开头。
    3. 不能和关键字,保留字,显式常量一样。关键字都是小写的。
    4. null,true,false都不是关键字,属于显式常量。goto,const都是保留关键字。
    (4)A C D
    记住接口中的方法都是public abstract类型的,变量都是public static final类型的,既然方法字段都是public类型的,就是为了让所有的类、包使用的,所以自然需要使用public去修饰了。
    (5)AC
    在Java中,常用的线程通信方式有两种,分别是利用Monitor实现线程通信、利用Condition实现线程通信。线程同步是线程通信的前提,所以究竟采用哪种方式实现通信,取决于线程同步的方式。

    如果是采用synchronized关键字进行同步,则需要依赖Monitor(同步监视器)实现线程通信,Monitor就是锁对象。在synchronized同步模式下,锁对象可以是任意的类型,所以通信方法自然就被定义在Object类中了,这些方法包括:wait()、notify()、notifyAll()。一个线程通过Monitor调用wait()时,它就会释放锁并在此等待。当其他线程通过Monitor调用notify()时,则会唤醒在此等待的一个线程。当其他线程通过Monitor调用notifyAll()时,则会唤醒在此等待的所有线程。

    JDK 1.5新增了Lock接口及其实现类,提供了更为灵活的同步方式。如果是采用Lock对象进行同步,则需要依赖Condition实现线程通信,Condition对象是由Lock对象创建出来的,它依赖于Lock对象。Condition对象中定义的通信方法,与Object类中的通信方法类似,它包括await()、signal()、signalAll()。通过名字就能看出它们的含义了,当通过Condition调用await()时当前线程释放锁并等待,当通过Condition调用signal()时唤醒一个等待的线程,当通过Condition调用signalAll()时则唤醒所有等待的线程。
    (6)数组元素个数为4,下标在0~3内即为合法,k+5下标越界。
    (7)\d匹配的是数字,\D匹配的是非数字。
    (8)substring实际是new,5字符
    str3和4也都是new,每个5字符
    分别都会创建新的对象
    常量池是PermGen的
    因此应该是一共15字符
    (9)答案是G
    A、B、C 用==比较的是对象的地址,返回false
    D、E、F 中比较的两个对象的类型不同,返回false
    (10)正确答案: A B D E

  • 相关阅读:
    【题解】同济线代习题一.8.3
    C语言 结构体和共用体——对结构体的操作
    Java入门 集合框架、泛型和Collection(补充)(第二十三天)
    redis6 跟着b站尚硅谷学习
    【教学类-06-06】20230905数字题目随便玩( 加减法、分合、比大小,纸张消耗)
    MYSQL下载及安装完整教程
    Dajngo06_Template模板
    Golang 并发模式
    CenterPoint 源码流程解读(一)
    NAT网络地址转换实验(思科)
  • 原文地址:https://blog.csdn.net/Nicholas_giao/article/details/126826156