java每日五小题-2020-9-12
- 假设num已经被创建为一个ArrayList对象,并且最初包含以下整数值:[0,0,4,2,5,0,3,0]。 执行下面的方法numQuest(),最终的输出结果是什么?
private List<Integer> nums;
//precondition: nums.size() > 0
//nums contains Integer objects
public void numQuest() {
int k = 0;
Integer zero = new Integer(0);
while (k < nums.size()) {
if (nums.get(k).equals(zero))
nums.remove(k);
k++;
}
}
正确答案: D 你的答案: D (正确)
[3, 5, 2, 4, 0, 0, 0, 0]
[0, 0, 0, 0, 4, 2, 5, 3]
[0, 0, 4, 2, 5, 0, 3, 0]
[0, 4, 2, 5, 3]
2.下面关于静态方法说明正确的是
正确答案: B 你的答案: D (错误)
在静态方法中可用this来调用本类的类方法
在静态方法中调用本类的静态方法时可直接调用
在静态方法中只能调用本类中的静态方法
在静态方法中绝对不能调用实例方法
解析:
- A.静态成员随类的加载而加载,这个时候对象都还没有,this代表当前对象,所以this不能用于static方法中.
- C还可以调用静态变量
- D.可以通过对象.进行调用
- 下列关于包(package)的描述,正确的是()
正确答案: D 你的答案: A (错误)
包(package)是Java中描述操作系统对多个源代码文件组织的一种方式。
import语句将所对应的Java源文件拷贝到此处执行。
包(package)是Eclipse组织Java项目特有的一种方式。
定义在同一个包(package)内的类可以不经过import而直接相互使用。
解析:
1、为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。Java中的包一般均包含相关的类,java是跨平台的,所以java中的包和操作系统没有任何关系,java的包是用来组织文件的一种虚拟文件系统。A错
2、import语句并没有将对应的java源文件拷贝到此处仅仅是引入,告诉编译器有使用外部文件,编译的时候要去读取这个外部文件。B错
3、Java提供的包机制与IDE没有关系。C错
(IDE:集成开发环境,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。)
4、定义在同一个包(package)内的类可以不经过import而直接相互使用。
4.下列关于Java并发的说法中正确的是()
正确答案: B 你的答案: C (错误)
CopyOnWriteArrayList适用于写多读少的并发场景
ReadWriteLock适用于读多写少的并发场景
ConcurrentHashMap的写操作不需要加锁,读操作需要加锁
只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了
解析:
A,CopyOnWriteArrayList适用于写少读多的并发场景
B,ReadWriteLock即为读写锁,他要求写与写之间互斥,读与写之间互斥,
读与读之间可以并发执行。在读多写少的情况下可以提高效率
C,ConcurrentHashMap是同步的HashMap,读写都加锁
D,volatile只保证多线程操作的可见性,不保证原子性
5.关于Java中的数组,下面的一些描述,哪些描述是准确的:( )
正确答案: A C F 你的答案: B D E (错误)
A、数组是一个对象,不同类型的数组具有不同的类
B、数组长度是可以动态调整的
C、数组是一个连续的存储结构
D、一个固定长度的数组可类似这样定义: int array[100]
E、两个数组用equals方法比较时,会逐个便利其中的元素,对每个元素进行比较
F、可以二维数组,且可以有多维数组,都是在Java中合法的
解析:
-
Object.equals()比较的是两个数组的地址,相当于==的作用,如果是遍历数组中的元素,进行一一比较,应该选择Arrays.equals()
-
数组的长度是固定的
-
int[] array =new int[100]就对了