2019年11月15日 java1

考点1

要表示10个学生的成绩,下列声明并初始化数组正确的是()

  • A int[] score=new int[ ]
  • B int score[10]
  • C int score[]=new int[9]
  • D int score[]=new int[10]

解析

显示答案/隐藏答案正确答案: D

以下两种写法都可以:
int score[] = new int[10];
int[] score = new int[10];

考点2

下面有关java基本类型的默认值和取值范围,说法错误的是?

  • A 字节型的类型默认值是0,取值范围是-2^7—2^7-1
  • B boolean类型默认值是false,取值范围是true`false`
  • C 字符型类型默认是0,取值范围是-2^15 —2^15-1
  • D long类型默认是0,取值范围是-2^63—2^63-1

解析

显示答案/隐藏答案正确答案: C

考点3

关于下列程序段的输出结果,说法正确的是:( )

1
2
3
4
5
6
public class MyClass{
static int i;
public static void main(String argv[]){
System.out.println(i);
}
}
  • A 有错误,变量i没有初始化。
  • B null
  • C 1
  • D 0

解析

显示答案/隐藏答案正确答案: D

成员变量会默认初始化
静态成员可以访问静态成员

考点4

java中下面哪个能创建并启动线程()

1
2
3
4
5
public class MyRunnable implements Runnable{
public void run(){
//some code here
}
}
  • A new Runnable(MyRunnable).start()
  • B new Thread(MyRunnable).run()
  • C new Thread(new MyRunnable()).start()
  • D new MyRunnable().start()

解析

显示答案/隐藏答案正确答案: C

考点5

list是一个ArrayList的对象,哪个选项的代码填到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?()

1
2
3
4
5
6
7
8
9
10
11
Iterator it = list.iterator();
int index = 0;
while (it.hasNext()){
Object obj = it.next();
//needDelete返回boolean,决定是否要删除
if (needDelete(obj)){
//todo delet
e
}
index ++;
}

A it.remove();
B list.remove(obj);
C list.remove(index);
D list.remove(obj,index);

解析

显示答案/隐藏答案正确答案: A

Iterator 支持从源集合中安全地删除对象,只需在 Iterator 上调用 remove() 即可。这样做的好处是可以避免 ConcurrentModifiedException ,当打开 Iterator 迭代集合时,同时又在对集合进行修改。有些集合不允许在迭代时删除或添加元素,但是调用 Iterator 的remove() 方法是个安全的做法。

在循环中调用List的remove方法出现的问题

如果在循环的过程中调用集合的remove()方法,就会导致循环出错,例如:

1
2
3
for(int i=0;i<list.size();i++){
list.remove(...);
}

循环过程中list.size()的大小变化了,就导致了错误。

所以,如果你想在循环语句中删除集合中的某个元素,就要用迭代器iterator的remove()方法,因为它的remove()方法不仅会删除元素,还会维护一个标志,用来记录目前是不是可删除状态,例如,你不能连续两次调用它的remove()方法,调用之前至少有一次next()方法的调用。

正确使用List的remove方法删除元素的写法

for循环删除问题,如果真想用,可以这样,既不出错,也能正确删除:

1
2
3
4
for(int i=0;i<list.size();i++){
list.remove(i);
i--;
}
1
2
3
4
5
6
7
8
public class Test {
static String x="1";
static int y=1;
public static void main(String args[]) {
static int z=2;
System.out.println(x+y+z);
}
}

考点6

关于下面的程序Test.java说法正确的是( )。

  • A 3
  • B 112
  • C 13
  • D 程序有编译错误

解析

显示答案/隐藏答案正确答案: D

static不能修饰局部变量

被static修饰的变量称为静态变量,静态变量属于整个类,而局部变量属于方法,只在该方法内有效,所以static不能修饰局部变量

考点7

下面代码的运行结果为:()

1
2
3
4
5
6
7
8
import java.io.*;
import java.util.*;
public class foo{
public static void main (String[] args){
String s;
System.out.println("s=" + s);
}
}
  • A 代码得到编译,并输出”s=”
  • B 代码得到编译,并输出”s=null
  • C 由于String s没有初始化,代码不能编译通过
  • D 代码得到编译,但捕获到 NullPointException异常

解析

显示答案/隐藏答案正确答案: C

局部变量不会默认初始化

局部变量可以先声明不用必须初始化,但使用局部变量之前一定要先初始化。

考点8

Java语言中,下面哪个语句是创建数组的正确语句?( )

  • 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][];

解析

显示答案/隐藏答案正确答案: ABDE

二维数组变量和两个中括号可以全排列

二维数组的一维长度必须确定

二维数组定义时,一维的长度必须定义,二维可以后续定义