Java第一次月考50题及解析

Java第一次月考50题及解析

Java第一次月考50题及解析_第1张图片


1、【单选题】在Java中,用()关键字修饰的方法可以直接通过类名来调用。
A.static
B.final
C.public
D.void
【正确答案】A
【答案解析】此题目考查的是Java中的static关键字。
在Java语言中,由static关键字修饰的方法为静态方法,可以通过类名来直接调用。所以本题正确的选项为A。

2、【单选题】下列Java代码运行的结果是()。

public class Test {
	public static void main(String[] args) {
		Aoo o1 = new Aoo();
		Aoo o2 = new Aoo();
		o2.show();
	}
}
class Aoo{
	int x;
	static int y;
	public Aoo() {
		x++;
		y++;
	}
	public void show(){
		System.out.println(x+","+y);
	}
}

A.1,1
B.1,2
C.0,1
D.0,2
【正确答案】B
【答案解析】此题目考查的是Java中的实例变量和静态变量。
在Java语言中,由static修饰的成员变量不属于对象的数据结构,而是属于类的变量,存在于方法区,而不是在堆中,一个类的static成员变量只有“一份”,而无论该类创建了多少个对象。
没有static修饰的成员变量为实例变量,是属于对象的变量,存在于堆中,实例变量有几个对象就有几份。
本题中创建了两个Aoo对象,在堆中会有两个实例变量x,在方法区中有一个静态变量y。y因为只有一份,所以y的值增为2了。O2引用的实例变量x的值为1。所以本题正确选项为B。

3、【单选题】以下关于继承的描述正确的是()。
A.在java中,一个类只能实现一个接口
B.在java中, 类只允许单一继承
C.在java中,一个类不能同时继承一个类和实现一个接口
D.在java中,类通过extends关键字来实现接口
【正确答案】B
【答案解析】此题目考查的是Java中的继承。
在java中,一个类可以实现多个接口,由逗号分隔,所以选项A是错误的。
Java中的一个类只能继承一个类,即只允许单一继承,所以选项B是正确的。
Java中一个类可以同时继承一个类和实现一个或多个接口,但是需要注意,应先继承后实现,所以选项C是错误的。
Java中extends是用于类与类之间的继承,接口与接口之间的继承。类实现接口需要通过implements关键字,所以选项D是错误的。

4、【单选题】在Java中,下列代码段的输出结果是()。

public class Test {
	public static void main(String[] args) {
		int[] arr1 = { 1,2,3 };
		int[] arr2 = { 1,2 };
		int[] arr3 = t(arr1, arr2);
		System.out.println(Arrays.toString(arr3));
	}
	public static int[] t(int[] arr1, int[] arr2) {
		int[] arr = Arrays.copyOf(arr2, arr2.length + arr1.length);
		System.arraycopy(arr1, 0, arr, arr2.length, arr1.length);
		return arr;
	}
}

A.[1, 2, 3, 1, 3]
B.[1, 2, 3, 1, 2]
C.[1, 2, 1, 2, 1]
D.[1, 2, 1, 2, 3]
【正确答案】D
【答案解析】此题目考查的是Java数组的操作。
在t方法中,Arrays.copyOf()为数组的复制,将arr2整个复制到arr数组中,arr的长度为arr2的长度+arr1的长度之和,也就是arr的长度为5。此时arr的数据为 [1,2,0,0,0]。
System.arraycopy()也是数组的复制,将arr1中的第1个元素开始,复制到arr中,从arr2的长度也就是2开始,复制arr1的长度也就是3个。此时arr的数据为[1,2,1,2,3]。
本题的正确选项为D。

5、【单选题】以下属于合法的Java标识符的是:()。
A.he-llo
B.5hello
C.Hello
D.class
【正确答案】C
【答案解析】Java合法的标识符必须满足如下条件:
1、由数字,字母,下划线,$组成
2、不能以数字开头
3、不能是Java中的关键字
以上题目A选项-不合法,B选项数字开头不合法,D选项class是定义类的关键字,C正确

6、【单选题】在Java中,无论测试条件是什么,()循环将至少执行一次。
A.for
B.while
C.do…while
D.while…do
【正确答案】C
【答案解析】此题目考查的是Java中的循环。
在java语言中,循环结构有三种,分别是while,do…while,for。
其中for循环更适合于固定次数循环,当条件满足时会执行循环体。
while循环是先判断后执行的,当条件第一次就不满足的时候,它将一次都不执行。
do…while循环是先执行一次后判断的,无论条件满足与否,它都至少会执行一次。
所以本题正确选项为C

7、【单选题】执行下面代码结果是( )。

for(int i=0;;){        
	System.out.println("i="+i);
	break;
}

A.语法错误,缺少表达式2和表达式3
B.死循环
C.程序什么都不输出
D.输出:i=0
【正确答案】D
【答案解析】本题考查for循环结构,for循环格式可以简化为for(;;){},本题中,只有初始化表达式i=0,直接进入循环体执行打印i=0,再执行break,结束整个for循环
D正确

8、【单选题】下面关于调用构造方法的描述中,正确的是( )。
A.构造方法在类定义的时候被调用
B.构造方法在创建对象的时候被调用
C.构造方法在调用对象方法时被调用
D.构造方法在使用对象的变量时被调用
【正确答案】B
【答案解析】本题考查构造方法的调用
当使用构造方法创建对象的时候,构造方法会被自动调用,因为构造方法中,初始化了对象的成员变量,只有这样,JVC才会为对象根据成员量的值分配空间。选项B正确。

9、【单选题】在Java语言中,接口之间的继承关系是()。
A.单一继承
B.多重继承
C.不能继承
D.不一定
【正确答案】B
【答案解析】此题目考查的是Java中的继承
在java语言中,接口之间的继承关系是多重继承,也就是说,一个接口可以继承多个接口,所以本题正确选项为B。

10、【单选题】下列哪项是合法的抽象类、抽象方法的定义()。
A.

abstract Animal{
  abstract void run();
} 

B.

class abstract Animal{
  abstract void run();
} 

C.

abstract class Animal{
  abstract void run();
}

D.

abstract class Animal{
	  abstract void run(){
	}
} 

【正确答案】C
【答案解析】此题目考查的是Java中的抽象方法和抽象类。
选项A缺少class关键字,所以选项A是错误的。选项B中abstract是修饰词,需要放在class的前面,所以选项B是错误的。选项D抽象类的定义是正确的,但是抽象类Animal中的抽象方法run是错误的,抽象方法不能有方法体,所以选项D也是错误的。本题正确选项为C。

11、【单选题】在Java中,下列关键字中不属于访问控制修饰符的是()。
A.abstract
B.public
C.protected
D.private
【正确答案】A
【答案解析】此题目考查的是Java中的访问控制修饰符。
在java中访问控制分四种,public,protected,private和默认的。
所以本题不属于访问控制修饰符的正确选项为A。

12、【单选题】下列程序中,出现编译错误的行数是( )。

1  class Fu{	
2    Fu(int x){		
3		System.out.println("fu .."+x);
4    }
5  }
6  class Zi extends Fu{	
7    Zi(){		
8		System.out.println("zi run");
9    }
10   Zi(int x){
11		this();
12		System.out.println("zi..."+x);
13	 }
14  }

A.11
B.2
C.7
D.10
【正确答案】C
【答案解析】创建子类时,子类的所有构造函数默认都会调用父类中空参数的构造函数。因为子类的构造函数第一行有一个句隐式的super();语句
程序中的第7行,空的构造函数中,会自动调用父类没有参数的构造器,而父类中,定义了有参数的构造器,系统将不会提供无参数的构造器
选项C正确。

13、【单选题】Java代码的运行结果是( )。

class Account {   
	private String name;   // 名字  
	private int state;     // 账号状态  
	private String idCard; // 身份证号   
	public void Account() {   
		name = "李强";   
		state = 0;   
         idCard = "109...";
		System.out.println("执行构造方法。");}   
	public void show() {   
		System.out.println
		("账务账号的名字是" + name + ",状态是" 
			+ state + ",身份证号是" + idCard + "。"); }   
	public static void main(String[] args) {   
		Account acc = new Account();     
		acc.show();} 
}

A.账务账号的名字是null,状态是1,身份证号是109…。
B.执行构造方法。
账务账号的名字是null,状态是1,身份证号是null。
C.账务账号的名字是null,状态是0,身份证号是null。
D.执行构造方法。
账务账号的名字是李强,状态是1,身份证号是109…。
【正确答案】C
【答案解析】本题考查构造方法的特点和作用
构造方法必须与类名相同,没有返回值类型。如果没有定义构造方法,系统会提供无参的构造方法。构造方法用来初始化成员变量和创建对象。当使用某个构造方法,创建对象的时候,系统会自动调用该构造方法。构造方法在初始化成员变量的时候,给成员变量添加初值。整型为0,字符串类型为null。本题中,定义的Account()方法,与类名相同,但并非是构造方法,只是普通的方法。所以,该类中的成员变量还是默认的初值。
选项C正确

14、【单选题】下列接口和类的定义正确的是( )。
A.

public interface A{
	int i = 10;
	public void funA();
	}
public interface B{
	int j = 10;
	public void funB();
	}
public interface C implements A,B{
} 

B.

public interface A{
	int i = 10;
	public void funA();
	}
public interface B{
	int j = 10;
	public void funB();
	}
public interface C extends A,B{
}

C.

public interface A{
	int i = 10;
	public void funA();
	}
public interface B{
	int j = 10;
	public void funB();
	}
public class C extends A,B{
} 

D.

public interface A{
	int i = 10;
	public void funA();
	}
public interface B{
	int j = 10;
	public void funB();
	}
public class C implements A implements B{
} 

【正确答案】B
【答案解析】本题考查接口的继承。
选项A,错误,接口之间只有继承,没有实现
选项B,正确,java中,接口之间可以多重继承
选项C,错误,类与接口只有实现,没有继承
选项D,错误,一个类可以实现多个接口,但语法应该是class c implements A,B{…}

15、【单选题】System.out.println(3+4+“bobo”+3+4);
的打印结果:( )

A.34bobo34
B.7bobo7
C.7bobo34
D.34bobo7
【正确答案】C
【答案解析】本题考查程序的执行顺序。
输出语句中,先执行3+4,结果是7,再执行7+“bobo”,结果是7bobo再+3,结果是7bobo3,在加4,结果是7bobo34
选项C正确

16、【单选题】下列程序运行结果是( )。

public class Book{
	private String name;
	private double price;
	public Book(){
         this.name = "三国演义";
		this.price = 70.5;
	}
	public Book(String name){
		this.name = name;
	}
	public Book(String name,double price){
		this(name);
		this.price = price;
	}
	public static void main(String[] args){
		Book book = new Book("水浒传",60.5);
		System.out.println(book.name);
                System.out.println(book.price);
	}
}

A.水浒传
60.5
B.水浒传
70.5
C.三国演义
60.5
D.三国演义
70.5
【正确答案】A
【答案解析】本题目考查this关键字在构造方法中的使用
程序执行流程分析如下:
main()方法中使用两个参数的构造方法创建对象book,在构造方法中又调用了其他构造方法,根据方法调用的内存模型分析出,构造方法Book(String,double)中,调用了Book(String),执行Book(name),此时name=“水浒传”,再继续执行Book(String,double),此时price=60.5
根据以上分析选项A正确。

17、【单选题】下列数组对象创建语句中,错误的是( )。
A.char[] arr = new char[]{};
B.char[] arr = new char[];
C.char[] arr = {};
D.char[][] arr = new char[2][];
【正确答案】B
【答案解析】该题目考查如何创建一个数组对象
创建数组对象可以有以下方式
char [] arr = new char[3];
char [] arr = new char[]{};
char [] arr = {};
char[][] arr = new char[2][];
选项B创建数组没有指定长度,不合法,选择B

18、【单选题】score是一个整数数组,有五个元素,已经正确初始化并赋值,仔细阅读下面代码,程序运行结果是( )。

int temp = score[0]; 
 for (int index = 1;index < 5;index++) {     
	 if (score[index] < temp) {         
		 temp = score[index];     
	 }  
}

A.求最大数
B.求最小数
C.找到数组最后一个元素
D.编译出错
【正确答案】B
【答案解析】本题考查对数组元素遍历的操作
循环体中,依次访问数组中第一个元素之后的每个元素,并与第一个元素比较如果小于第一个元素,将该元素赋值给变量temp,最后temp的值为数组中的最小元素
结果为选项B,求最小数。

19、【单选题】

int x = 10;
x = x++ +10;
System.out.println(x);

程序会输出( )。
A.11
B.10
C.21
D.20
【正确答案】D
【答案解析】本题考查后++程序的执行顺序
代码x = x++ + 10;执行顺序如下
1、先执行x+10,结果为20
2、再执行x++,x值为11
3、将第一步结果赋值给x,x=20;
选项D正确

20、【单选题】关键字abstract可以和下列( )关键字一起使用
A.final
B.private
C.public
D.static
【正确答案】C
【答案解析】本题考查abstract关键字
选项A错误,抽象方法必须被覆盖 ,而Final后面的方法无法被覆盖
选项B错误,抽象方法必须被覆盖,私有的方法无法被覆盖 因为子类不可见
选项C正确。
选项D错误,静态可以直接被类名调用,调用抽象方法就没什么意义

21、【单选题】下列()选项添加到空白处,可以输出乘法表的语句。

for(int i=1;i<=9;i++){	
	//空白处
	System.out.println();
}

A.

for(int j=1;j<=9;j++){
		System.out.print(j+"*"+i+"="+j*i+"\t");
} 

B.

for(int j=1;j<i;j++){
		System.out.print(j+"*"+i+"="+j*i+"\t");
} 

C.

for(int j=1;i<=j;j++){
		System.out.print(j+"*"+i+"="+j*i+"\t");
} 

D.

for(int j=1;j<=i;j++){
		System.out.print(j+"*"+i+"="+j*i+"\t");
} 

【正确答案】D
【答案解析】此题考查嵌套循环的用法,嵌套循环外层执行一次,内层要执行整个循环,内存循环中的循环变量与外层的循环变量
选项A会出现每次i的值都与1~9相乘
选项B会打印出不完整的乘法表
选项C会无限循环
选项D正确

22、【单选题】给出以下代码,请问如何声明totalPage使其为一个只读属性( )。

public class Page{
	public int totalPage;
}

A.声明totalPage变量为private。
B.声明Page类为private。
C.声明totalPage变量为private,并且建立一个用于获取totalPage变量值
的getTotalPage() 方法。
D.声明totalPage变量为static。
【正确答案】C
【答案解析】本题考查java类中只读属性的定义
只读属性需要使用private修饰,只能由类中提供的方法访问该属性,类中需要提供形如public int getTotalPage(){return …}的方法,方法中负责提供算法,返回属性对应的类型的值。
选项C正确

23、【单选题】java代码,如下:

class Fu{  
	public void count(int i){ 
		System.out.println(11/4); 
	} 
}  
public class Zi extends Fu{ 
	public void count(int i){ 
		System.out.println(11%i); 
	}  
	public static void main(String[]args){ 
		Fu fu = new Zi( ); 
		fu.count(4); 
	} 
}   

编译运行,结果是( )。
A.2
B.3
C.2.75
D.0
【正确答案】B
【答案解析】本题考查多态中的方法调用父类型的引用,指向子类的对象,如果子类中重写了父类的方法,使用父类的引用调用被重写的方法的时候,此时该引用会与子类中的方法绑定,我们称为动态绑定。
因此,本题中执行的子类中的方法。11%4的运算是求模的运算,结果是3

24、【单选题】下列for循环执行结束后,输出结果是:()。

int y = 1;
for(System.out.println("a"); y < 3; System.out.println("c")){
	System.out.println("d");
	y++;
}

A.a d c d d
B.a d d d d
C.a c d c d
D.a d c d c
【正确答案】D
【答案解析】for 循环中,使用三个表达式控制循环的执行,该题目中的循环比较特殊,第一和第三表达式分别为输出语句所替代,但是不影响for循环的执行流程。执行流程如下:
1、计算表达式1的值
2、计算表达式2的值,如果为true则执行循环体,否则退出循环
3、执行循环体
4、执行表达式3
5、计算表达式2的值,如果为true则执行循环体,否则退出循环
6、如此循环往复

25、【单选题】下列程序输出结果是( )。

int a = 0;
while (a < 5) {
	switch (a) {
	 case 0:
	 case 3:
		a = a + 1;
	 case 1:
	 case 2:
		a = a + 2;
	 default:
		a = a + 3;
	}
}

System.out.print(a);
A.5
B.0
C.6
D.2
【正确答案】C
【答案解析】本题考查while循环和switch语句
a初值0,a<5结果为true,进入循环体,再进入switch语句,a=0,执行case 0后的语句,没有break语句,程序继续执行case 3后的语句,a=a+1,a值为1
同理,还是没有break语句,程序继续执行case 1,case 2后的语句a = a + 2,a值为1+2,结果为3,最后执行defalt语句,将a值再加3
结果为6,C选项正确

26、【单选题】执行完下面程序片段后( )的结论是正确的。

int a, b, c;     
a = 'a';      
b = 'b';     
c = (a + b > 180 ? a++ : b++);
// 已知字符'a',字符'b'对应的ASCII值97,98 

A.a=97,b=98,c=99
B.a=98,b=99,c=99
C.a=97,b=98,c=98
D.a=98,b=98,c=97
【正确答案】D
【答案解析】本题考查三目运算符,自增运算符和char
变量a,b初值分别是字符’a’,字符’b’对应的ASCII值97,98
所以a+b=97+98,结果为195,大于180成立,变量c的
结果为a++,因为是后++,先赋值再运算,c结果是97,之后a再执行自增,变成98,而b++是不执行的
综上所述a=98 b=98 c=97
选项D正确

27、【单选题】给出以下代码,请问该程序输出( )结果。

class Example{ 
	static int i=1; 
	static { 
		++i; 
	}    
	public static void main (String[]args){ 
		increment(i,5); 
		display(i); 
	}    
	static void increment(int n, int m){ 
		n+=m; 
	}    
	static void display (int n) { 
		System.out.print(n); 
	}    
	static{ 
		++i; 
	} 
}

A.1
B.3
C.6
D.7
【正确答案】B
【答案解析】本题考查静态代码块。类执行即加载。静态代码块是类加载的时候自动执行。
类变量i在静态代码块中自增了2次,结果是3,而调用方法的时候,并没有改变量i的值,只是将i的值传递到方法中。
选项B正确。

28、【单选题】for循环语法格式如下:
for(表达式1;表达式2;表达式3){循环体}
以下说法正确的是:

A.每次循环都要执行表达式1
B.表达式2可以返回任何数据类型
C.3个表达式均可省略,使用如下格式for(;;){循环体}
D.循环体中必须有合法的java语句
【正确答案】C
【答案解析】本题考查for循环的使用
选项A,for循环的执行流程中,表达式1只执行一次,说法错误
选项B,表达式2必须返回boolean类型,用来判断循环是否继续执行,错误
选项C,可以省略3个表达式,构成一个死循环,正确
选项D,循环体中,可以没有任何java语句,满足语法要求,说法错误

29、【单选题】下列选项中能够正确获取到一个元素在数组中首次出现的位置的函数是( )。
A.

public int getIndex(int[] arr,int key){ 
	for (int x=0; x<arr.length ; x++ ){
			if(arr[x]==key)
			  return x;
	}
	return -1;
} 

B.

public int getIndex(int[] arr,int key){ 
	for (int x=0; x<arr.length ; x++ ){
			if(arr[x]==key)
				return x;
	}
} 

C.

public int getIndex(int[] arr,int key){ 
	for (int x=0; x<=arr.length ; x++ ){
			if(arr[x]==key)
				return x;
	}
	return -1;
} 

D.

public int getIndex(int[] arr,int key){ 
	for (int x=0; x<arr.length ; x++ ){
			if(arr[x]==key)
				return key;
	}
	return -1;
} 

【正确答案】A
【答案解析】该题目考查自定义方法操作数组
选项A正确
选项B 如果查找的key在数组中不存在return语句不会执行,缺失return语句
选项C 会出现数组下标越界异常
选项D 语法没错误,返回可能是查找的元素,而不是位置

30、【单选题】下列运算结果正确的是( )。
A.

int x = 4590;
x = x / 1000 *1000;

x的结果是4590
B.

int x = 3;
x = x++;

x的结果是4
C.

short x = 3;
x = x+4;

x的结果是7
D.

int x = 2;
boolean b = x>3 && x<6;

b的结果是false
【正确答案】D
【答案解析】本题考查运算符的使用
选项A,java中整数的直接量都是int类型,两个整型相除,忽略余数,结果还是int类型,4590/1000结果是4,4*1000=4000,结果为4000,错误
选项B,程序的执行顺序先运算赋值运算,变量再自增,所以x的结果是3
选项C,编译错误

31、【单选题】将给定的数组变成如下格式的字符串,下列选项中,正确的是( )。
例如:[1,3,4]->"[1,2,3]"

A.

String str = "[";
for (int x=0; x<=arr.length ; x++){
  if(x!=arr.length-1)
	str = str + arr[x] + ",";
 else
	str = str + arr[x] + "]";
} 

B.

String str = "[";
for (int x=0; x<arr.length-1 ; x++){
  if(x!=arr.length-1)
	str = str + arr[x] + ",";
 else
	str = str + arr[x] + "]";
} 

C.

String str = "[";
for (int x=0; x<arr.length ; x++){
  if(x!=arr.length-1)
	str = str + arr[x] + ",";
 else
	str = str + arr[x] + "]";
} 

D.

String str = "[";
for (int x=0; x<arr.length+1 ; x++){
  if(x!=arr.length-1)
	str = str + arr[x] + ",";
 else
	str = str + arr[x] + "]";
} 

【正确答案】C
【答案解析】该题目考查的是数组元素的遍历,通过for循环,循环变量作为访问数组元素的下标,即可访问数组中每一个元素,注意防止出现数组下标越界异常
A,D都会出现越界异常,B会丢失数组元素,C正确

32、【单选题】对于给定数组 int[] arr = {25,12,37,9,11,19};计算数组中元素的最大值,下列选项中
正确的是( )。

A.

int max = arr[0];
for(int i=1;i<arr.length){
	if(max<arr[i]){
		max = arr[i];
	}
} 

B.

int max = arr[0];
for(int i=1;i<=arr.length;i++){
	if(max<arr[i]){
		max = arr[i];
	}
} 

C.

int max = arr[0];
for(int i=1;i<arr.length-1;i++){
	if(max<arr[i]){
		max = arr[i];
	}
} 

D.

int max = arr[0];
for(int i=1;i<arr.length;i++){
	if(max<arr[i]){
		max = arr[i];
	}
} 

【正确答案】D
【答案解析】本题考查for循环的使用和如何操作数组
选项A会出现编译错误,for循环中,缺失表达式3,错误
选项B中,数组的最大下标值为数组长度-1,会出现数组越界异常,错误
选项C中,通过for循环访问数组元素,会缺失最后一个元素
选项D 正确

33、【单选题】下列程序输出的结果是:

int count = 0;
for(int i=1;i<=10;i++){
	if(i==5){
		continue;
	}
	for(int j=1;j<=10;j++){
		if(j==5){
			break;
		}
		count++;
	}
}
System.out.println(count);

A.45
B.100
C.36
D.99
【正确答案】C
【答案解析】此题目考查嵌套for循环和break、continue的用法。嵌套for循环,外层执行一次,内层循环执行完整一次break在循环中会终止循环,continue停止本次循环,继续下一次循环。
该题目中,外层循环中当i=5的时候,停止,继续下一次循环
内层循环每次i=5的时候,循环终止,所以外层整个循环体执行9次
内层循环j=5的时候,循环终止,所以内层循环整个循环体执行4次
由于是嵌套循环,所以内层循环体共执行9*4=36次,即count自增
了36次,结果是36

34、【单选题】下列程序输出结果是( )。

char c = 'a'; // 'a' 的int值为97
if(c>100){
	System.out.println('A');
}else if(c>90){
	System.out.println('B');
}else if(c>80){
	System.out.println('C');
}else{
	System.out.println('D');
}  

A.A
B.B
C.C
D.D
【正确答案】B
【答案解析】本题考查if语句
If语句结构之一if…else if…else if…else,此结构执行流程为,当出现表达式
结果为true,即执行语句体,整个if结构运行结束
本题中,char c = ‘a’,c对应的ASCII值为97
97>90结果为true,打印字符B,其他语句体不再执行,选项B正确

35、【单选题】下列程序输出结果是:

int pageSize = 5;
int count = 61;
int maxPage = count%pageSize==0?count/pageSize:count/pageSize+1;
System.out.println(maxPage);

A.12.2
B.12
C.13
D.会出现编译错误
【正确答案】C
【答案解析】本题考查使用三目运算符实现分页逻辑
Java中三目运算符结构是:boolean表达式?表达式1:表达式2
三目运算符运算规则如下:
先计算boolean表达式;
如果boolean表达式值为true,整个表达式的结果为表达式1的值;
如果boolean表达式值为false,整个表达式的结果为表达式2的值;
本题中61%5不等于0,整个表达式结果为61/5+1,结果为13
选项C正确

36、【多选题】(多选题)下列关于Linux操作系统,描述正确的是( )。
A.Linux 是一个开源的操作系统 是一个类似Unix的操作系统
B.Linux 是主流的服务器操作系统,广泛应用于互联网、云计算、智能手机等领域
C.Linux 中的相对路径,使用“.”表示上一级目录,“…”表示当前路径
D.Linux 中使用"pwd"命令显示当前工作目录的内容
【正确答案】A,B
【答案解析】本题考查对Linux操作系统的基本了解和命令的使用
Linux是一套免费使用和自由传播的类Unix操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个开源的类Unix的操作系统。A选项正确
Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机,是主流的服务器操作系统 B选项正确
"."表示当前路径,“..”表示上一级路径 C选项错误
常用命令中,pwd用于显示当前工作目录 D选项错误

37、【多选题】(多选题)Java接口中定义方法,正确的是( )。
A.public void imethod();
B.void imethod();
C.protected void imethod();
D.private void imethod();
【正确答案】A,B
【答案解析】本题考查接口中的方法定义
接口中的方法默认都是public的,即使不使用public修饰,也是public的
选项A,B正确,
选项C,D错误,接口中的方法只能是public的,不能使用protected和private。

38、【多选题】(多选题)变量定义如下:int i = 128;
下列赋值语句正确的是:()。

A.int j = i;
B.short s = i;
C.short s = 128;
D.long l = i;
【正确答案】A,C,D
【答案解析】整数常量在java中默认是int类型。
选项A 将int 类型赋值给int 类型是合法的。
选项B i是int类型变量,赋值给short类型的变量s,需要强制转换语法为:short s = (short)i
选项C Java的编译器,可以对常量值进行隐式转换,128属于short类型范围,所以语法正确
选项D Java中,向上转型是自动完成的,即隐式转换或自动转换

39、【多选题】(多选题)给出以下代码,请问该程序的运行结果是什么?

class A{  
	private int x=0;
	static int y=1; 
	protected int z=2; 
}   
class B extends A{ 
	void method(){  
		System.out.println(x); 
		System.out.println(y); 
		System.out.println(z); 
	} 
}  

下列说法正确的是( )。
A.程序编译错误,因为类B不能访问变量x。
B.程序编译成功,打印输出012。
C.程序编译错误,如果移走System.out.println(x)这条语句,可使编译程序通过。
D.程序编译错误,因为变量x未在类B中定义。
【正确答案】A,C,D
【答案解析】本题考查java中几种访问修饰符
public:公共的,可以在任何类中访问
protected:受保护的,只能在同一个包中,或子类中访问
default:只能在同一个包中的类中访问
private:私有的,只能在本类中访问的
本题代码中,变量x是私有的,不能在类外部访问,ACD正确。


Java第一次月考50题及解析_第2张图片


以下都是多选题

40、【多选题】(多选题)给定java代码如下所示,在1处新增下列( )方法,是对show方法的重载

public class Test{  
	public void show(int x, int y, int z) {    } 
	//1
}

A.public int show(int x,int y,float z){return 0;}
B.public int show(int x,int y,int z){return 0;}
C.public void show(int x,int z){}
D.public viod show(int z,int y,int x){}
【正确答案】A,C
【答案解析】本题考查方法的重载规则
方法的重载必须满足方法名相同和参数不同(类型或个数)
选项AC满足重载的条件正确
选项BD参数都与定义的方法参数相同,不是重载。

41、【多选题】(多选题)下列对java中关键字final的说法正确的是( )。
A.关键字final可以修饰类,方法,变量。
B.final修饰的类,称为final类,类中方法必须使用final修饰
C.类中被final修饰的方法,在其子类中不能被重写
D.类中的变量如果使用static和final修饰,必须声明同时初始化,不可被改变
【正确答案】A,C,D
【答案解析】本题考查final的用法

  • final可以修饰类,方法,和变量
  • final修饰方法,不可以被重写
  • final修饰类,该类不能被继承
  • final修饰的变量,为常量,不可改变
    选项ACD正确。
    选项B错误,final的类中,没有对方法是否final的限定。

42、【多选题】(多选题)下列关于do…while循环说法正确的是:
A.do…while循环,循环体至少执行一次
B.do…while循环和while循环只是语法不同,没区别
C.do…while循环先执行循环体,再执行boolean表达式,如果为true再执行循环体
D.以上说法都正确
【正确答案】A,C
【答案解析】本题考查do…while循环的用法和while循环的区别。
while和do…while的区别如下:
while循环先判断再执行;
do…while循环先执行一次循环体,再判断。
当初始条件不满足循环条件时,while循环一次都不会执行;
do…while循环不管任何情况都至少执行一次,所以选项AC正确

43、【多选题】(多选题)如下变量的定义,double d = 1.5;int x=1,y=2,z=3;则正确的switch语句是( )
A.switch((int)d){
case 1:System.out.println(x);break;
case 2:System.out.println(y);break;
}
B.switch(d){
case 1.5:System.out.println(x);break;
case 2.0:System.out.println(y);break;
}
C.switch(x+y){
case 1:System.out.println(x);break;
case 2:System.out.println(y);break;
}
D.switch(x+y){
case 1:System.out.println(x);break;
case z:System.out.println(y);break;
}
【正确答案】A,C
【答案解析】本题考查switch结构的用法switch语句中,表达式结果类型为byte,short,int,char,jdk1.7之后支持String类型
本题中选项B,变量d类型是double类型,错误。
case后必须使用常量,
选项D中使用变量z,作为case选项,错误
选项A,将d强制转换成int类型符合语法要求 正确
选项C, x+y结果为int类型,case后都使用常量,满足语法要求,正确,所以正确答案AC

44、【多选题】(多选题)下列程序中不会出现编译错误的是( )
A.

short s1 = 3;
short s2 = 5;
s1 += s2; 

B.

short s1 = 3;
short s2 = 5;
s1 = s1+s2; 

C.

short s1 = 3;
short s2 = 5;
s1 = s1 * s2; 

D.

short s1 = 3;
short s2 = 5;
s1 *= s2 ; 

【正确答案】A,D
【答案解析】本题考查扩展赋值运算符。
Java的扩展赋值运算符,+=,-=,*=,/=, %=
x+=y等价于x=x+y,其他同理。
除了以上语法现象外,使用扩展赋值运算符运算的时候,内部隐含强制转换。
如果出现需要类型转换,扩展赋值运算符直接进行转换。
选项B C都出现相同错误,计算结果都是int类型,都需要从int类型强制转换到short类型 选项AD都使用扩展赋值运算符运算,自动强制转换
AD正确

45、【多选题】(多选题)Eclipse是Java常用的集成开发工具,下列对Eclipse描述正确的是:()。
A.Eclipse可以通过插件(plugin)的方式扩展其功能。
B.Eclipse联盟是由IBM公司捐资组建的。
C.Eclipse使用了SWT图形界面技术。
D.Eclipse中采用自动对Java源程序编译
【正确答案】A,B,D
【答案解析】Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,Eclipse 是商业软件公司

46、【多选题】(多选题)下列关于java中的方法描述正确的是( )。
A.Java中定义方法的格式是,修饰符 返回值类型 方法名(参数列表){方法体}。
B.Java中的方法,如果有返回值,方法中必须有return语句
C.Java中定义方法,参数列表中必须有形参变量
D.Java中的方法,可以无限的被反复调用
【正确答案】A,B,D
【答案解析】本题考查方法的基本使用
Java中的方法用于封装一段特定的逻辑功能,可以在程序中反复调用,方法可以减少代码重复,便于程序的维护。java中定义方法有5个要素,修饰符,返回值类型,方法名,参数列表和方法体。修饰符和参数列表会根据需要,是可选要素。定义方法,如果指定了方法的特殊的返回值类型,方法中必须有return语句,如果方法没有返回值,必须使用void。
根据以上描述,本题中ABD正确,C错误,可以没有参数列表。

47、【多选题】(多选题)下列关于成员变量默认值的描述中,正确的是( )。
A.byte类型的数据默认值是0
B.int类型的数据默认值是0
C.long类型的数据默认值是0
D.float类型的数据默认值是0.0f
【正确答案】A,B,D
【答案解析】本题考查基本类型的默认初值,long类型的默认初值是0L,
byte,int默认初值都是0
float默认初值是0.0f
选项ABD正确。

48、【多选题】(多选题)下列属于JAVA语言的特点是( )。
A.跨平台
B.支持多线程
C.面向对象
D.可以直接访问操作系统
【正确答案】A,B,C
【答案解析】JAVA语言具备跨平台性、面向对象、安全性、多线程、简单易用等特性

49、【多选题】(多选题)请选出属于JDK的组成部分( )。
A.支持JAVA程序运行的一组类库
B.JVM
C.支持JAVA程序开发的一组开发工具
D.一组软件测试工具
【正确答案】A,B,C
【答案解析】JDK:JAVA开发工具集,包含JAVA程序的运行环境和辅助JAVA开发的一组开发工具。运行环境又包括一组类库和JVM

50、【多选题】(多选题)下列正确的表达式是 ( )。
A.byte b = 128;
B.boolean b = null;
C.long l=0xfffL;
D.double d =0.9239d;
【正确答案】C,D
【答案解析】本题考查几种基本数据类型的赋值
选项A错误,byte类型最大值是127
选项B错误,boolean类型值只有true和false
选项C,D正确


以上是本人在java培训时的第一次月考题,还有第二、第三次的月考题也上传在了博客中,我也总结了一些java面试题,供自己和大家学习交流用。
Java第一次月考50题及解析_第3张图片


未完,待续。。。

你可能感兴趣的:(错题集)