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错误,任何方法都可以抛出异常。
 
 
                     
            
        













 
                    

 
                 
                    