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;

假定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


版权声明:本文为Nicholas_giao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Nicholas_giao/article/details/126826156