1、【单选题】Calendar类中,用于为指定的日历字段增加或减去指定的时间量的方法是?( )。
get(int field)
B.void add(int field,int amount)
C.void set(int field,int value)
D.void set(int year,int month,int date)
【正确答案】B
【答案解析】本题考查Calendar类中的方法
void add(int field,int amount);方法为给定的时间分量的值加上给定的值,若给定的值为负数,则是减去给定的值。
2、【单选题】如果要按照特定顺序保存元素,应当使用的容器是( )
A.HashMap
B.ArrayList
C.TreeSet
D.数组
【正确答案】C
【答案解析】本题考查TreeSet保存元素,会以特定的顺序保存元素选项C正确。
3、【单选题】如下变量的定义:
String str1 = “haohao”;
String str2 = “haohao”;
以上代码中创建了( )对象
A.0
B.1
C.2
D.3
【正确答案】B
【答案解析】Java为了提高性能,静态字符串(字面量、常量、常量连接)在常量池中创建,并尽量使用同一个对象,重用静态字符串。对于重复出现的字符串直接量,JVM会首先在常量池中查找,如果存在即返回该对象。
本题中两个变量都指向内容相同的字符串,所以只有1个对象。选项B正确。
4、【单选题】下列哪个方法可以使线程从运行状态进入阻塞状态( )。
A.run()
B.yield()
C.sleep()
D.start()
【正确答案】C
【答案解析】此题目考查的是线程状态的变化。处于运行状态的线程,当执行sleep()方法时,会进入阻塞状态。选项C正确
5、【单选题】下列( )方法用来定义线程要执行的任务。
A.start()
B.run()
C.sleep()
D.wait()
【正确答案】B
【答案解析】此题目考查的是每个线程要执行的任务需要在run()方法中定义
选项A 用于启动线程
选项C用来休眠线程
选项D让某个线程处于等待状态
选项B正确。
6、【单选题】实现Point类的equals方法,具体逻辑为:“成员变量x和y分别相等的Point对象被视为相等”。

public class Point {
  private int x;
  private int y;
  ...
  public boolean equals(Object obj) {
   《填入代码》
  }
}
复制代码

《填入代码》处应填入的代码正确的是:
A.

if(obj.x == this.x || obj.y == this.y){
  return true;
}
return false; 
复制代码

B.

if(!(obj instanceof Point)) return false;
if(((Point)obj).x == ((Point)obj).y && this.x == this.y){
  return true;
}
return false; 
复制代码

C.

if(!(obj instanceof Point)) return false;
if(((Point)obj).x == this.x && ((Point)obj).y == this.y){
  return true;
}
return false; 
复制代码

D.

if(obj.x == this.x && obj.y == this.y){
  return true;
}
return false; 
复制代码

【正确答案】C
【答案解析】本题考查equals方法的重写。
选项A错误,必须将参数强制转换到Point类型,才能访问Point类中的x和y
选项B错误,不符合题目中的需求,需要比较的是两个对象的x和y
选项C正确
选项D错误必须将参数强制转换到Point类型,才能访问Point类中的x和y
7、【单选题】Java中,如下字符串"你好北京"中的每个字符占用的内存字节数是( )。
A.0
B.1
C.2
D.3
【正确答案】C
【答案解析】本题考查字符串中字符的内存分配
Java中,字符串底层个是由字符数组构成,而每个字符占用内存2个字节
选项C正确。
8、【单选题】分析以下程序:

1  public class TestEquals{   
2	public static void main(String[]args){  
3	 String str1=new String("haohao");  
4	 String str2=new String("haohao");  
5 	 if(str1.equals(str2)){   
6	   System.out.println("Equal");  
7	 }  
8   }  
9  }
复制代码

该程序的执行结果是( )。
A.程序执行后无输出
B.程序执行后输出“Equal”
C.程序在第5行出现编译错误
D.程序执行后出现异常
【正确答案】A
【答案解析】本题考查String类中的equals()方法。
boolean equals(Object object);重写自父类Object的equals()方法。在String类中,用于区分大小写的比较两个字符串内部字符是否相同。本题中创建2个字符串对象,str1与str2对象的字符内容大小写不同所以str1.equals(str2)返回false,不执行if语句体,所以没有任何内容输出选项A正确
9、【单选题】JDK中javadoc是用来生成文档注释,文档注释会生成( )文件
A…txt文本文件
B…doc word文档文件
C…java java文件
D…html 网页文档文件
【正确答案】D
【答案解析】本题考查JDC中的文档注释工具
JAVA中,可以通过JDK中提供的javadoc工具,可以将形如/**...*/的内容转换为HTML文档说明
选项D正确。
10、【单选题】下面属于线程安全的类是( )。
A.ArrayList
B.StringBuilder
C.HashMap
D.Hashtable
【正确答案】D
【答案解析】本题考查集合类中属于线程安全的类
ArrayList和HashMap都是非线程安全的
Vector和Hashtable都是线程安全的。
11、【单选题】测试线程是否处于活动状态的方法是()。
A.getState()
B.isAlive()
C.isDaemon()
D.isRun()
【正确答案】B
【答案解析】此题目考查的是如何获取线程信息。
选项A 获取线程的状态
选项B 测试线程是否处于活动状态
选项C 测试线程是否为守护线程
选项D 没有改方法
选项B正确。
12、【单选题】阅读代码:

public class Cell{
  private int row;
  private int col;
  //getter()和setter()
}
复制代码

能够通过该类中的row属性,比较该类多个对象的大小,可以实现的接口是( )。
A.List
B.Iterator
C.Comparable
D.Map
【正确答案】C
【答案解析】本题考查Comparable接口。类通过实现Comparable接口,并重写接口中compareTo()方法,可以实现对该类的多个对象进行比较
选项C正确。
13、【单选题】SimpleDateFormat类的哪个方法可以将Date转化成String对象?( )。
A.equals
B.toString
C.parse
D.format
【正确答案】D
【答案解析】本题考查SimpleDateFormat类中的方法
String format(Date date);用来将日期格式化成特定格式的字符串
选项D正确
14、【单选题】

int[][]arr = new int[3][];
System.out.println(arr[0].length);
复制代码

运行结果是( )。
A.会出现编译错误。
B.运行期会抛出ArithmeticException异常
C.运行期会抛出IOException异常
D.运行期会抛出NullPointerException异常
【正确答案】D
【答案解析】此题目考查的是当对一个null值的对象,访问其属性或方法,程序会出现NullPointerException异常。
二维数组没有初始化内部数组,则二维数组中的数组都是null值,选项D正确。
15、【单选题】

String str = new String("abc DEF");
String newstr = str.toLowerCase(); 
String newstr2 = str.toUpperCase();
System.out.println(newstr); 
System.out.println(newstr2);
复制代码

下面哪个选项是正确的( )。
A.ABC def
abc DEF
B.abc def
ABC DEF
C.abc def
ABC def
D.ABC DEF
abc def
【正确答案】B
【答案解析】本题考查字符串字符大小写转换函数
toLowerCase(),将字符串英文字符全部小写
toUpperCase(),将字符串英文字符全部大写
str.toLowerCase(),之后,生成新字符串对象,内容为"abc def"。
str.toUpperCase(),之后,生成新字符串对象,内容为"ABC DEF"
选项B正确。
16、【单选题】给出以下代码,请问该程序运行的结果是()。

1.public class Demo{  
2.public static void main(String args[]){ 
3. StringBuilder s=new StringBuilder("Hello"); 
4.if(s.length()>5&&  
5.(s.append("there").equals("False")));  
6.System.out.println("value is "+s);
7.} 
8.}
复制代码

A.打印输出 value is Hello
B.打印输出 value is Hello there
C.无内容打印输出
D.4、5行代码编译错误
【正确答案】A
【答案解析】本题考查StringBuilder对象的API方法
第4行s.length()=5,s.length()>5为false,由于使用短路与,&&后不再做运算。
第5行直接使用if表达式后使用分号,第6行不再是if语句体中的语句,会直接
执行,与变量s进行“+”运算后结果是value is Hello
选项A正确
17、【单选题】下列程序输出结果是( )。

String str = "华为 is a very good company!";
boolean bo1 = str.startsWith("华为")&&str.endsWith("company");
System.out.println(bo1);
复制代码

A.true
B.false
C.编译错误
D.运行时异常
【正确答案】B
【答案解析】本题考查startsWith()和endsWith()方法
字符串str以"华为"开头,str.startsWith(“华为”)结果是true
字符串str以"!"结尾,str.endsWith(“company”);结果是false
true&&false结果是false,选项B正确
18、【单选题】对保存在List中的数据进行查找,方法不正确的是( )。
A.对元素进行遍历,依次比较
B.对内容有序的List可以进行二分法查找
C.调用indexOf方法查找
D.无论是否有序都可以用二分法查找,比线性查找快很多
【正确答案】D
【答案解析】本题考查对List集合元素的查找
选项D说法不正确,二分查找法,必须是对有序的元素。
19、【单选题】在JAVA中,下面关于String类和StringBuilder类的描述正确的是( )。
A.StringBuilder类的对象调用tostring()方法将转换为String类型
B.两个类都有append()方法
C.可以直接将字符串“test”赋值给声明的Stirng类和StringBuilder类的变量
D.两个类的实例的值都能够被改变
【正确答案】A
【答案解析】本题考查StringBuilder和String类的区别
选项A正确,toString()方法,即是转换到字符串类型的方法。
选项B错误,String类没有append()方法
选项C错误,StringBuilder类不能直接赋值
选项D错误,字符串对象一旦创建,内容不可变
20、【单选题】
请选出能够正确的创建如下类的子类的选项( )。

public class Fu{
	public void play() throws IOException{
		//...
	}
}
复制代码

A.

public class Zi extends Fu{
	void play() throws IOException{
		//...
	}
} 
复制代码

B.

public class Zi extends Fu{
	void play() throws Exception{
		//...
	}
} 
复制代码

C.

public class Zi extends Fu{
	public void play() throws IOException{
		//...
	}
} 
复制代码

D.

public class Zi extends Fu{
	public void play() throws Exception{
		//...
	}
} 
复制代码

【正确答案】C
【答案解析】此题目考查的是继承中的方法重写修饰符和异常类型的声明
子类重写父类的方法,方法的修饰符权限必须大于或等于父类方法的修饰符
选项AB错误
子类重写父类的方法,方法声明的异常类型必须与父类相同或是父类中方法
声明异常类型的子类型。D错误
选项C正确。
21、【单选题】阅读代码:

public class Cell implemens Comparable<Cell>{
   int row;
   int col;
  //getter()和setter()
  //code here
}
复制代码

//若要cell类对象能在TreeSet集合中按特定要求排序,code here处,需要添加的代码段是()。
A.

public void compareTo(Cell o){
  this.row - o.row;
}  
复制代码

B.

public boolean compareTo(Cell o){
  return this.row > o.row;
} 
复制代码

C.

public int compareTo(Cell o){
  return this.row - o.row;
} 
复制代码

D.

public int compareTo(Object o){
  return this.row - o.row;
} 
复制代码

【正确答案】C
【答案解析】本题考查compareTo()方法。
compareTo()方法的定义格式为int compareTo(Object o);
如果在实现接口的给定了泛型,方法中的参数即为传入泛型的参数类型
选项A,B方法的返回值类型错误。
选项D,方法中的参数应该是Cell,因为类实现接口的时候给出了Cell类型
因此,选项C正确。
22、【单选题】下列程序段运行后,输出( )。

String str = "123az45d67xyz89";
str = str.replaceAll("[a-z]+", "***");
System.out.println(str);
复制代码

A.123az45d67xyz89
B.***az***d***xyz***
C.123***45***67***89
D.123456789
【正确答案】C
【答案解析】本题考查replaceAll()使用正则,根据正则替换原有字符,选项C正确。
23、【单选题】阅读如下代码:

List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("aaa");
list.add("aaa");
list.add("aaa");
复制代码

迭代该集合中的元素,下列待填入处应补充的是( )。

for(/*待填入*/){
  System.out.print(str);
}
复制代码

A.List list : String str
B.String str : List list
C.list : String str
D.String str : list
【正确答案】D
【答案解析】本题考查使用增强的for循环,迭代集合ArrayList
增强的for循环使用如下:
For(String str : list){…}
选项D正确
24、【单选题】下列创建线程并启动线程的代码中,/*code here*/处应该添加的代码是( )。

public class Test01 {
	public static void main(String[] args)throws Exception {
		Thread t = new Thread(/*code here*/);
		t.start();
	}
}
复制代码

A.new Runnable()
B.

new Runnable {
	public void run() {
		//..
	}
} 
复制代码

C.

new Runnable() {
	public void run() {
		//..
	}
} 
复制代码

D.

new Thread {
	public void run() {
		//..
	}
} 
复制代码

【正确答案】C
【答案解析】此题目考查的是通过内部类创建线程。
选项A错误,Runnable是接口不能直接创建对象。
选项B错误,new Runnable后缺少小括号。
选项C正确。
选项D错误,new Thread后缺少小括号。
25、【单选题】下列创建一个新的文件的代码段中1和2处应该添加的代码是:( )。

File file = new File("c://a.txt");
if(/*1*/){
	try {
		/*2*/
	} catch (IOException e) {
		e.printStackTrace();
	}
}
复制代码

A.!file.exists();
file.createNewFile();
B.!file.exists();
file.mkdir();
C.File!=null
file.createNewFile();
D.file.isDirectory()
file.createNewFile();
【正确答案】A
【答案解析】此题目考查的是如何通过File类创建一个文件。
判断文件是否存在的方法是:exists();
创建文件的方法是:createNewFile();
选项A正确
26、【单选题】对于以下字符串 str="likeqin,yeqianwen,linzixiang"
通过下列程序获取到三个名字。
程序如下:

String[] names =();
for (int i = 0; i < names.length; i++) {
	System.out.println(names[i]);
}
复制代码

空白处应该填写的代码是:( )。
A.split(",",str)
B.str.split(",")
C.str.toArray(",")
D.Arrays.toArray(str,",");
【正确答案】B
【答案解析】本题考查字符串的拆分。
本题完成将一个字符串拆分的功能,String类中提供了一个String[] split(",")
方法,根据特定的分隔符,返回一个字符串数组。
并遍历该数组,打印数组中每个元素。
27、【单选题】阅读下列代码:

class Emp{
	private int empNo;
	private String ename;
	public int getEmpNo() {
		return empNo;
	}
	public void setEmpNo(int empNo) {
		this.empNo = empNo;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}	
	public int hashCode() {		
		return empNo;
	}	
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Emp other = (Emp) obj;
		if (empNo != other.empNo)
			return false;
		return true;
	}
	public static void main(String[] args) {
		Emp e1 = new Emp();
		e1.setEmpNo(1001);
		e1.setEname("苍老师");
		Emp e2 = new Emp();
		e2.setEmpNo(1001);
		e2.setEname("Robin");
		System.out.println(e1==e2);
		System.out.println(e1.equals(e2));
	}
}
复制代码

运行该类,输出结果是( );
A.false false
B.false true
C.true false
D.true true
【正确答案】B
【答案解析】本题考查equals==的区别
Object类中默认equals()方法和==没有区别,本类中重写了equals()方法,如果empNo相同,两个Emp对象的equals()方法,即会返回true。
选项B正确。
28、【单选题】给出以下代码,请问该程序的运行结果是( )。

String s1 ="ab";
String s2 ="abcd";     
String s3="cd";		 
String s4 =s1+s3;     
s1=s4;    
System.out.println("s1"+((s1==s2)?"==":"!=")+"s2");
复制代码

A.s1==s2
B.s1!=s2
C.s1
D.s1=="abcd"
【正确答案】B
【答案解析】本题考查字符串常量与变量的操作
String s4 = s1+s3,会产生新的对象。
String s2 = "abcd",s2是常量池中的一个对象,
s2==s4,返回false,s1=s4,s1指向常量池中“abcd”对象,所以s1!=s2
选项B正确。
29、【单选题】阅读如下代码,在//插入代码处添加代码,正确的选项是( )。

public class Cell{
	int row;
	int col;
	public Cell(){}
	public Cell(int row,int col){
		this.row = row;
		this.col = col;
	}
	public static void main(String args[]){
		List<Cell> cells = new ArrayList<Cell>();
		cells.add(new Cell(2,3));
		cells.add(new Cell(5,1));
		cells.add(new Cell(3,2));
		//对该集合中对象进行排序
		Collections.sort(cells,
			//插入代码
		);
	}
}
复制代码

A.

new Comparator<Cell>(){
	public int compare(Cell c1,Cell c2){
		return c1.row - c2.row;
	}
} 
复制代码

B.

new Comparator<Cell>(){
	public boolean compare(Cell c1,Cell c2){
		return c1.row > c2.row;
	}
} 
复制代码

C.

new Comparator<Cell>{
	public int compare(Cell c1,Cell c2){
		return c1.row - c2.row;
	}
}  
复制代码

D.

new Comparator<Cell>{
	public boolean compare(Cell c1,Cell c2){
		return c1.row > c2.row;
	}
} 
复制代码

【正确答案】A
【答案解析】本题考查Comparator接口
Collections工具类中,sort方法,根据特定的比较规则
对集合中的元素进行排序。调用sort方法需要传入一个实现了Comparator接口的实现类对象。也可以直接使用匿名内部类的方式实现。
Comparator接口中的compare()方法返回int类型,选项BD错误
匿名内部类的格式为:new Comparator(){//…},选项A正确
30、【单选题】完成如下需求,下列选项正确的是( )。
定义方法,对字符串中的字符进行排序。
例如字符串“bcdefag”排序后结果:“abcdefg”;
A.public void sortString(String str){
char [] arr = str.toCharArray();
Arrays.sort(arr);
String temp = String.valueOf(arr);
return temp;
}
B.public String sortString(String str){
char [] arr = str.toCharArray();
Arrays.sort(arr);
String temp = String.valueOf(arr);
System.out.println(temp);
}
C.字符串对象,创建之后,内容不可改变,以上需求不合理,无法实现。
D.public String sortString(String str){
char [] arr = str.toCharArray();
Arrays.sort(arr);
String newString = String.valueOf(arr);
return newString;
}
【正确答案】D
【答案解析】本题考查字符串与字符数组。
本题需求定义一个方法实现,根据需求,
确定方法返回值为排序后的新的字符串对象,方法返回类型为String
方法中需要一个不确定的字符串对象,参与运算,方法的参数为一个字符串对象
所以方法应该为形如public String method(String str){}
方法中实现字符排序的思路如下:
1、根据源字符串生成字符数组,使用toCharArray()方法
2、对字符数组排序,使用Arrays工具类中的sort()方法
3、将排序后的字符数组,转换成字符串对象,使用valueOf()方法
4、将新的字符串对象返回,方法中必须使用return语句.
选项A,定义返回值类型为void的方法,方法不允许使用return返回值,错误
选项B,定义返回值类型为String的方法,方法必须有return语句返回值,错误
选项C,字符串对象不可改变,改变之后会产生新的对象,需求是可以实现的,错误
选项D,符合方法定义语法,内部实现可以完成需求,正确。
31、【单选题】Iterator进行迭代集合中元素,并将其移除《插入代码》处应填入的代码是( )。

ArrayList<String> list = new ArrayList<String>(); 
list.add("苍老师"); 
list.add("陈老师"); 
list.add("王老师"); 
《插入代码》
复制代码

A.

Iterator<String> it = list.iterator(); 
while(it.hasNext()){ 
	it.next(); 
	it.remove(); 
} 
复制代码

B.

Iterator<String> it = list.iterator(); 
while(it.hasNext()){ 
	it.remove(); 
} 
复制代码

C.

Iterator<String> it = list.iterator(); 
while(it. hasNext()){ 
	String str = it.next(); 
	list.remove(str); 
} 
复制代码

D.

Iterator<String> it = list.iterator(); 
while(it.hasNext()){ 
	list.remove(); 
} 
复制代码

【正确答案】A
【答案解析】本题考查Iterator的使用。
Iterator可以迭代集合,迭代期间,不能通过集合对象,删除集合中元素
如果通过集合对象删除,程序在运行期间会抛出异常。选项CD错误
Iterator可以迭代集合,迭代期间,不能通过集合对象,删除集合中元素
但是可以通过迭代器Iterator对象删除集合中元素,需要迭代一个元素
删除一个元素,选项A正确。
选项B没有迭代元素,直接删除,会抛出异常。
32、【单选题】下列自定义方法用于实现获取指定子串在字符串中出现次数
public int getSubCount(String str,String substr){
int count = 0;
int index = 0;
while((index = str.indexOf(substr, index))!=-1){
count++;
index =______________________;
}
return count;
}
完成如上功能,空白处应该填写( )。
A.index + substr.length();
B.index + str.length();
C.index + substr.size();
D.index + str.size();
【正确答案】A
【答案解析】本题考查通过infexOf()和length()方法结合,检索已知字符串中,某个子串出现的
次数。
定义方法的思路如下:
1、确定方法的返回值类型
如何确定方法的返回类型?根据需求,功能中需要有运算结果,结果为子串出现的次数,返回int类型。
2、确定方法的参数列表
如何确定方法的参数列表?分析功能中是否有不确定的数据参与运算。本题需求中计算的某个字符串中,子串出现的次数,所以有两个字符串类型的参数,一个用于查找的字符串,一个查找哪一个子串。
根据以上思路定义出方法为:public int subString(String str,String subStr){};
方法中,需要使用循环依次查找子串,出现依次,计数变量自增1,直到找不到子串,循环结束。
当查找到有一个子串,就从该子串的下一个位置继续查找。所以空白处应该使用index+strSub.length();
选项A正确。
33、【单选题】ArrayList的初始化内容如下:

ArrayList<String> list = new ArrayList<String>(); 
list.add("java"); 
list.add("aaa"); 
list.add("java"); 
list.add("java"); 
list.add("bbb");  
复制代码

下面可以删除list中所有的"java"的代码是( )。
A.

for (int i = list.size() - 1; i >= 0; i--){ 
	if ("java".equals(list.get(i))) { 
		list.remove(i); 
	} 
} 
复制代码

B.

for (int i = 0; i < list.size(); i++) {
    if ("java".equals(list.get(i)))	{ 
		list.remove(i); 
	} 
} 
复制代码

C.

list.remove("java"); 
复制代码

D.

list.removeAll("java"); 
复制代码

【正确答案】A
【答案解析】A选项:从最后一个元素开始倒序对比检查,如果等于"java"就删除它,从后面删除元素不会破坏前面每个元素的下标位置,能保证每个元素都被遍历到,正确。B选项:从第一个元素开始对比检查,如果某个元素被删除了,后面的元素的下标位置都会发生变化。下标位置的变化会导致某些元素被漏查,例如删除了第一个元素,原本下标为1的元素现在变成了下标为0的元素,往前移了一位,下次程序会遍历下标为1的元素。把下标为0的元素漏查了。因此错误。选项A正确。
34、【单选题】对于catch子句的排列,下列哪种是正确的( )
A.父类异常在先,子类异常在后
B.子类异常在先,父类异常在后
C.有继承关系的异常不能在同一个try程序段内
D.只能有子类异常
【正确答案】B
【答案解析】此题目考查的是多个异常的捕获顺序。
如果一段代码可能出现多个异常类型,使用catch捕获的时候
先要捕获子类型的异常,再捕获其父类型的异常
选项B正确。
35、【单选题】先阅读下面的程序片段:

String str1=new String("haohao");  
String str2=new String("haohao");  
StringBuffer str3=new StringBuffer("haohao"); 
复制代码

对于上述定义的变量,以下表达式的值为true的是( )。
A.str1==str2;
B.str1.equals(str2);
C.str1==str3;
D.str2==str3;
【正确答案】B
【答案解析】本题考查String对象和StringBuffer对象。
使用new创建字符串对象,对象存在于堆内存中。
本题程序片段中在堆内存中创建了3个对象
A,C,D都是比较是否是一个对象,都错误。
B选项中,使用equals()方法比较两个字符串对象,由于String类重写了equals()方法,比较两个对象内部字符内容是否相同,因为相同所以返回true,选项B正确。
36、【单选题】下列选项中,( )是所有异常错误的父类。
A.Exception
B.Throwable
C.Error
D.RuntimeException
【正确答案】B
【答案解析】此题目考查的是java中所有异常的父类是Throwable,直接子类是
Error和Exception。
Error描述的系统错误,程序无法处理
Exception 程序异常,可以处理
RuntimeException,描述的是运行时异常
选项B正确。
37、【单选题】关键字()可以在方法内部抛出异常对象?
A.catch
B.throws
C.throw
D.synchronized
【正确答案】C
【答案解析】此题目考查的是异常的抛出。
当程序满足某种特定条件,可以使用throw 具体的异常对象的方式抛出该异常对象
选项C正确。
38、【单选题】如下程序:

String str = "I can do it because I think I can";
int index1 = str.indexOf("can");
int index2 = str.lastIndexOf("can");
int result = index1 + index2;
复制代码

result结果是:( )。
A.2
B.30
C.32
D.-1
【正确答案】C
【答案解析】本题考查字符串检索
int indexOf(String str) 在字符串中检索str,返回其第一次出现的位置,如果找不到返回-1.
int lastIndexOf(String str)str在字符串中多次出现时,将返回最后一个出现的位置。本题中index1 = 2;index2 = 30;result=2+30=32;
选项C正确。
39、【单选题】当方法遇到异常又不知如何处理时,下列哪种说法是正确的()。
A.捕获异常
B.抛出异常
C.声明异常
D.嵌套异常
【正确答案】C
【答案解析】此题目考查的是方法中的异常如果在方法内部不处理,
需要通知调用者处理,此时在方法声明的时候,使用throws关键字
声明该方法中可能出现的异常。
选项C正确。
40、【单选题】下列哪个方法用于创建一个抽象路径名指定的目录和其父目录( )。
A.createNewFile();
B.createNewFiles();
C.mkdir();
D.mkdirs();
【正确答案】D
【答案解析】此题目考查的是File类哪个方法用来创建层级目录
选项A错误,createNewFile();用来创建文件
选项B错误,File类中没有该方法
选项C错误,mkdir()用于创建当前目录
选项D正确。
41、【多选题】下列对线程的说法中正确的是( )。
A.线程就是程序
B.线程是一个程序的单个执行单元
C.多线程是指一个程序的多个执行单元
D.多线程用于实现并发
【正确答案】B,C,D
【答案解析】此题目考查的是线程的概念。
选项A错误。进程中所包含的一个或多个执行单元,称为线程。
多线程能够使多个执行单元并发执行。
42、【多选题】
下列对File类的描述正确的是( )。
A.创建File类对象,即在磁盘上创建了一个目录或文件
B.通过File类可以访问文件中的内容
C.File类中的delete()方法,可以删除文件或目录,如果删除目录,只能删除空目录
D.File类中的isDirectory()方法用于判断当前对象表示的是否是一个目录。
【正确答案】C,D
【答案解析】此题目考查的是File类以及类中的方法。
选项A错误,创建File对象,该对象为内存对象,并非是创建了一个目录或文件,
如果在磁盘上创建该对象所表示的文件或目录,需要调用API方法来实现。
选项B错误,File类不可以访问文件中的内容,只能操作该文件。
选项CD正确。
43、【多选题】对下列运算结果,判断正确的是( );
A."1az098".matches("\\d[a-z]{2,8}[0-9]+")
结果为true
B."1az098".matches("\\d[a-z]{2,8}[0-9]+")
结果为false
C."张三,,,李四,,王五,,,,,,马六,,".split("[,]+").length == 1;
该表达式结果返回true
D."张三,,,李四,,王五,,,,,,马六,,".split("[,]+").length == 4;
该表达式结果返回true
【正确答案】A,D
【答案解析】本题考查正则表达式
String类中的matches()方法和split()方法都支持正则表达式。
matches()方法用于判断已知字符串是否匹配某个正则
split()方法用于根据正则拆分字符串
选项A,B正则“\d[a-z]{2,8}[0-9]+”表示1位数字开头,2~8位字母,1位或多位数字,字符串"1az098"匹配正确,选项A正确
选项C,D 正则"[,]+“表示1位或多位逗号字符,split()方法,使用1位或多位逗号字符
为分隔符拆分字符串,拆分后字符串数组中为4个元素,选项D正确
选项A,D正确
44、【多选题】腾讯QQ号是从10000开始的,后续号码逐渐增大,下列正则表达式中可以表示所有QQ号的是()
A.^\d{5,}$
B.^[1-9][0-9]{4,8}$
C.^[1-9]\d{4,}$
D.^[1-9][0-9]{4,}$
【正确答案】C,D
【答案解析】本题考查5位以上数字1-9开头的数字,正则的表示方法。
选项CD正确。
45、【多选题】可以表示6位任意数字的正则是( )。
A.^[0-9]{6}$
B.^\d{6}$
C.^[0~9]{6}$
D.^\D{6}$
【正确答案】A,B
【答案解析】本题考查正则
正则表示任意数字:[0-9]或\d,选项CD错误,{6}表示6位,选项AB均正确。
46、【多选题】下列异常类中,属于RuntimeException的子类的是:( )。
A.FileNotFoundException
B.IOException
C.ClassCastException
D.ArrayIndexOutOfBoundsException
【正确答案】C,D
【答案解析】此题目考查的是Java中异常类型的分类。
Java中有两种异常,检查异常和运行时异常,检查异常必须处理,运行时异常可以不处理,选项AB为检查异常,CD为运行时异常,即为RuntimeException的子类,选项CD正确。
47、【多选题】下列是格式正确的XML标记的是( )。
A.<name>张三<name>
B.<name>张三</Name>
C.<name>张三</name>
D.<name/>
【正确答案】C,D
【答案解析】此题目考查的是XML的基本格式
选项A 结尾标记最少”/"
选项B XML区分大小写,开始标记和结尾标记大小写不一致。
选项CD正确。
48、【多选题】关于集合框架,说法正确的是( )。
A.与数组不同,集合框架是容量可变的容器
B.集合框架不能保存基本类型,但是可以将它们转换为包装类后保存
C.集合框架中的List, Set, Map接口都是Collection接口的子接口
D.集合类除了提供可变容量的存储外,还提供了对数据的算法
【正确答案】A,B,D
【答案解析】本题考查集合框架
选项C错误,Map接口不是Collection接口的子接口。
49、【多选题】下列选项中,对Object类描述正确的是( )。
A.Java中所有的类,都默认自动继承了Object类
B.Java中所有的类都从Object类中继承了toString()方法、
hashCode()方法和equals()等方法
C.Object类中toString()方法的返回值是一个字符串,
equals方法的返回值为1或0
D.定义类的时候,类中必须重写Object类中的toString(),equals(),hashCode()方法
【正确答案】A,B
【答案解析】本题考查有关Object类的说法
选项AB正确
选项C错误,equals()方法返回true或false
选项D错误,自定义类建议重写Object类中的3个方法,但不是必须。
50、【多选题】关于Java 异常,下列说法正确的是()。
A.异常是定义了程序中遇到的可恢复的错误,而不是编译时的语法错误
B.try……catch语句中对try 内语句监测,如果发生异常,则把异常信息放入Exception类的对象中
C.throws 用来表示一个方法有可能抛出异常给上一层,则在调用该方法时可以捕捉或抛出异常,否则无法编译通过
D.main方法不可以使用 throws 抛出异常
【正确答案】A,B,C
【答案解析】此题目考查的是异常概述。
选项D错误,任何方法都可以抛出异常。