单选题

1、下列程序运行后,输出结果是( )

public class Point { private int x, y;Point (int x, int y) {this.x = x;this.y = y;}public static void main(String[] args) {Point p1 = new Point(13, 14);Point p2 = new Point(17, 16);System.out.println(p1.x + p2.y);}
}

A.27
B.31
C.33
D.29
【正确答案】D
【答案解析】本题考查构造函数初始化对象的成员变量
this关键字表示调用该方法的当前对象。当使用构造函数创建对象的时候,该构造函数会被自动调用。运行Point p1 = new Point(13, 14);代码,此时构造函数中this表示对象p1,运行构造函数的时候,设置p1对象的成员变量x,y值分别为传入的参数13, 14,此时p1.x = 13;同理p2.y = 16, p1.x + p2.y = 13 + 16,结果为29
2、给定如下Java代码,编译运行时,结果是():

class Test {public static void main(String[] args) {for(int i = 0; i < 3; i++) {System.out.print(i);}System.out.print(i);}
}

A.编译错误
B.输出123
C.输出012
D.输出0123
【正确答案】A
【答案解析】这里考的是for循环
在本题目中,变量i的作用域仅仅只在for循环中,在for循环外输出变量i的值是会出现编译错误的。
3、在Java中,对while循环和do…while循环的描述正确的是()
A.while循环是先循环后判断,所以循环体至少被执行一次
B.do…while循环是先循环后判断,所以循环体至少被执行一次
C.没有区别,两种结构任何情况下都一样
D.while循环比do…while循环的执行效率高
【正确答案】B
【答案解析】此题目考查的是Java中的循环
在Java语言中,循环结构有三种,分别是whiledo…whilefor。其中while循环是先判断后执行,循环体有可能一次都不执行。而do…while是先循环后判断,所以循环体至少被执行一次。
4、在Java中,无论测试条件是什么,()循环将至少执行一次。
A.for
B.while
C.do…while
D.while…do
【正确答案】C
【答案解析】此题目考查的是Java中的循环
在Java语言中,循环结构有三种,分别是while,do…while,for。其中for循环更适合于固定次数循环,当条件满足时会执行循环体。while循环是先判断后执行的,当条件第一次就不满足的时候,它将一次都不执行。do…while循环是先执行一次后判断的,无论条件满足与否,它都至少会执行一次。
5、在Java中,下列选项中()是Java的关键字。
A.continue
B.Java
C.PUBLIC
D.Break
【正确答案】A
【答案解析】此题目考查的是Java中的关键字
Java语言是严格区分大小写的,所以PUBLICBreak都不是正确的关键字,而Java也不是关键字。
6、以下选项中的循环结构合法的是:( )
A.

while (i < 7) {   i++;System.out.println(i);
}

B.

int  i = 3;
while (i) {
System.out.println(i);
}

C.

int  j = 0;
for (int k=0; j<10; j++, k++)  {  System.out.println(j + "," + k);
}

D.

int i = 0;
do {System.out.println(i);i++;
};

【正确答案】C
【答案解析】此题目考查的是Java中的循环
选项A中未声明变量i而直接使用了,所以选项A是错误的。因为while后要求是boolean结果,所以选项B也是错误的。do…while是一组结构。
7、Java中使用( )关键字实现两个类的继承关系。
A.extends
B.final
C.implements
D.Extends
【正确答案】A
8、下列选项中,不属于JDK组成部分的是()
A.JVM
B.Java API
C.Java开发命令工具
D.Servlet
【正确答案】D
【答案解析】此题目考查的是Java的行业知识
JDK的组成部分包括:JVM、Java API、Java开发命令工具。
9、class Card{}下列不属于Card类的构造方法的是( )
A.Card(){}
B.public Card(){}
C.private Card(){}
D.public void Card(){}
【正确答案】D
【答案解析】本题考查构造函数的定义
构造函数与类名相同,没有返回值。选项D,定义的函数与类名相同,但是定义了返回值类型为void
10、在Java中,下面代码段的输出结果是()

public class Test {public static void main(String[] args) {Super s = new Sub();s.show();}
}
class Super{public void show() {System.out.println("Super");}
}
class Sub extends Super {public void show() {System.out.println("Sub");}
}

A.Sub
B.Super
C.编译错误
D.运行异常
【正确答案】A
【答案解析】此题目考查的是Java中方法的重写、向上造型
在本题目中,父类型引用指向子类对象为向上造型,而当子类对象的重写方法被调用时,不管是子类的引用调用还是父类的引用来调用,最终运行的都是子类重写后的版本。
11、Java中的访问控制修饰符,描述正确的是( )
A.private修饰的成员变量,只有在本类和子类中能够访问
B.public修饰的成员,在类的外部,也可以由对象访问
C.protected可以修饰外部类
D.private不能用来修饰成员方法
【正确答案】B
【答案解析】本题考查Java中访问控制修饰符选项A,private修饰的成员变量,只能在本类中访问,子类也不可以访问。选项C,protected不可以修饰类。选项D,private可以修饰成员变量和方法。
12、下列Java代码的输出结果是()

public class Test {public static void main(String[] args) {int[] arr = new int[5];arr[5] = 88;System.out.println(arr[5]);}
}

A.0
B.88
C.编译错误
D.运行异常
【正确答案】D
【答案解析】此题目考查的是Java中的数组
在Java语言中,数组的下标从0开始,最大下标为数组的长度-1,本题中,arr数组包含5个元素,所以最大下标为4,故而在使用下标5时会出现数组下标越界的异常。
13、下列if语句正确的输出结果是:()

int i = 10;
int j = 15;
if (i > j)i++;
j++;
System.out.println(i + j);

A.25
B.26
C.27
D.以上结果都不正确
【正确答案】B
【答案解析】if语句块中如果只有一句代码,可以省略大括号,题目中,if语句没有大括号,只有i++属于if语句块,j++不属于语句块内容,i++不执行,j++执行,所以结果是26
14、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()方法,与类名相同,但并非是构造方法,只是普通的方法。所以,该类中的成员变量还是默认的初值。
15、下列程序运行结果是( )

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
16、给出以下代码,请问如何声明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 ...}的方法,方法中负责提供算法,返回属性对应的类型的值。
17、下列程序运行结果是( )

public class Test {String str = new String("tedu");  char[]ch = {'x', 'y', 'z'};  public static void main(String args[]) {  Test t = new Test();  t.change(t.str,t.ch);  System.out.print(t.str + " and ");  System.out.print(t.ch);}  public void change(String str, char ch[]) {  str = "tarena";  ch[0] = 'w';    }
}

A.tedu and xyz
B.tarena and xyz
C.tedu and wyz
D.tarena and wyz
【正确答案】C
【答案解析】本题考查方法的调用
调用带有引用数据类型参数的方法,传的是引用,当在方法中操作该引用,被传递的参数所指向的对象将发生变化。本题中,调用change()方法,传递一个字符串类型引用,和数组对象的引用,方法中将字符串引用重新指向了一个新的字符串对象,源字符串对象不会发生变化。还是tedu,而方法中对数组的操作,改变了源数组中第1个元素,源数组被改变后为wyz
18、下列程序输出结果是( )

int i = 0;
int count = 0;
while (i++ < 2) { count += i;
}
System.out.println(count);

A.2
B.3
C.4
D.5
【正确答案】B
【答案解析】本题考查while循环执行流程
对于该循环,执行原理推演如下:i=0,i++<2,先比较0<2,结果为true,然后i++,此时i=1,count = 1i=1,i++<2,先比较1<2, 结果为true,然后i++,此时i=2,count = 1+2=3
i=2,i++<2,先比较2<2结果为false循环结束,count结果是3
19、

System.out.println(3 + 4 + "tedu" + 3 + 4);

的打印结果:( )
A.34tedu34
B.7tedu7
C.7tedu34
D.34tedu7
【正确答案】C
【答案解析】本题考查程序的执行顺序
输出语句中,先执行3+4,结果是7,再执行7+"tedu",结果是7tedu+3,结果是7tedu3,在加4,结果是7tedu34
20、Outer类中定义了一个成员内部类Inner,需要在main()方法中创建Inner类实例对象,以下四种方式正确的是( )
A.Inner in = new Inner();
B.Inner in = new Outer.Inner();
C.Outer.Inner in = new Outer.Inner();
D.Outer.Inner in = new Outer().new Inner();
【正确答案】D
【答案解析】本题考查静态方法创建实例内部类对象
内部类的最重要的一个特点就是它可以直接访问它外部类的成员变量。成员变量是对象身上的。对象创建完成了,才会为成员变量分配空间。能调用成员变量,意味着一定有了实例对象。main方法是静态的,它执行的时候可以不用创建那个对象。这就矛盾了。main方法运行的时候没有任何外部类的实例对象。我们的内部类的实例对象创建了。它又可以访问外部类的成员变量,外部类的实例对象在哪儿了?所以这个原因,要想创建内部类的实例对象,必须创建外部类的实例对象。
21、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的值为数组中的最小元素。
22、以下程序运行结果是:

class Demo {int x;public static void main(String[] args) {Demo d = new Demo();d.x = 8;show(d);System.out.println("x=" + d.x);}public static void show(Demo d)  {d.x = 7;}
}

A.x=8
B.会出现语法编译错误
C.x=7
D.以上都不对
【正确答案】C
【答案解析】本题考查调用带有引用类型的参数
调用带有引用类型的参数,传递的是对象的引用,方法中操作该参数,操作的是传递到该方法中的具体对象。本题目中,创建一个对象,变量d存储了该对象在内存中的地址信息,通过d.x = 8,修改了该对象的x值,然后调用show()方法,将该引用传递给show方法show()方法中,再次修改了该对象的x值为7,所以最后运行结果x=7
23、

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

程序会输出( )
A.11
B.10
C.21
D.20
【正确答案】D
【答案解析】本题考查后++程序的执行顺序
代码x = x++ + 10;执行顺序如下:① 先执行x+10,结果为20;② 再执行x++,x值为11;③ 将第一步结果赋值给xx=20
24、下列程序的输出结果是( )

class Person {public Person() {System.out.println("I am a Person!");}public void study() {System.out.println("Person is Studing");}
}
public class Worker extends Person {public Worker() {System.out.println("I am a Worker!");}public void study() {System.out.println("Worker is Studing");}public static void main(String[] args) {Person p = new Worker();p.study();}
}

A.I am a Person!
I am a Worker!
Worker is Studing
B.I am a Worker!
Worker is Studing
C.I am a Person!
I am a Worker!
Person is Studing
D.I am a Worker!
Person is Studing
【正确答案】A
【答案解析】本题考查继承中的构造函数和父类的引用指向子类的对象
继承中,子类的构造函数,默认一定会调用父类的无参构造函数,本题中使用子类的 构造函数创建了对象,那么子类的构造函数首先调用父类的构造函数,所以会输出I am a Person! I am a Worker! Person p = new Worker();父类的引用指向了子类的对象,子类重写了父类的study()方法,在运行期,实际调用的一定是子类中的study()方法,会输出Worker is Studing
25、下列数组对象创建语句中,错误的是( )
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创建数组没有指定长度,不合法。
26、下列程序中,出现编译错误的行数是( )

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行,空的构造函数中,会自动调用父类没有参数的构造器,而父类中,定义了有参数的构造器,系统将不会提供无参数的构造器。
27、以下选项中循环结构合法的是( )
A.

while (int i<7) {  i++;       System.out.println(i);
}

B.

int j = 3;
while (j) {System.out.println(j);
}

C.

int  j = 0;
for (int  k = 0; j + k !=10; j++, k++) {System.out.println(j + k);
}

D.

int  j = 0;
do{System.out.println(j);if (j = = 3) {continue loop;}
} while  (j < 10);

【正确答案】C
【答案解析】本题考查三种循环的语法
选项A,while循环使用变量i会有找不到该变量的的编译错误。选项B,while循环必须使用boolean表达式。选项C,没有语法错误。选项D,do-while语句体中,找不到loop
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、下列程序输出结果是:

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
30、给出以下代码,请问该程序输出( )结果。

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的值传递到方法中。
31、执行完下面程序片段后( )的结论是正确的。

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++是不执行的。
32、如下两个数组定义:

char[] arr1 = {'a', 'c', 'd'};
char[] arr2 = {'g', 'h', 'j'};

能将两个数组正确合并的选项是( )
A.

int length = arr1.length + arr2.length;
char[] arr3 = new char[length];
System.arraycopy(arr1, 0, arr3, 0, arr1.length);
System.arraycopy(arr2, 0, arr3, 0, arr2.length);

B.

int length = arr1.length + arr2.length;
char[] arr3 = new char[length];
System.arraycopy(arr1, 0, arr3, 0, arr1.length);
System.arraycopy(arr2, 0, arr3, arr1.length-1, arr2.length);

C.

int length = arr1.length + arr2.length;
char[] arr3 = new char[length];
System.arraycopy(arr1, 0, arr3, 0, arr1.length);
System.arraycopy(arr2, 0, arr3,arr1.length+1, arr2.length);

D.

int length = arr1.length + arr2.length;
char[] arr3 = new char[length];
System.arraycopy(arr1, 0, arr3, 0, arr1.length);
System.arraycopy(arr2, 0, arr3, arr1.length, arr2.length) ;

【正确答案】D
【答案解析】本题考查数组拷贝的操作
arraycopy(src, srcPos, dest, destPos, length),System类中的方法,用于拷贝数组元素各个参数含义如下:

src 表示源数组
srcPos 表示从源数组哪个位置拷贝
dest 表示目标数组
destPos 从目标数组哪个位置拷贝
length 表示拷贝源数组元素的个数

选项A,拷贝数组arr2的时候,覆盖了新数组中前3个元素。选项B,拷贝数组arr2的时候,覆盖了新数组中第3个元素。选项C,拷贝数组arr2的时候,从新数组下标4拷贝,拷贝3个元素,会出现越界异常。
33、将给定的数组变成如下格式的字符串,下列选项中,正确的是( )
例如:[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] + ",";elsestr = str + arr[x] + "]";
}

B.

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

C.

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

D.

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

【正确答案】C
【答案解析】该题目考查的是数组元素的遍历
通过for循环,循环变量作为访问数组元素的下标,即可访问数组中每一个元素,注意防止出现数组下标越界异常。A,D都会出现越界异常,B会丢失数组元素。
34、对于给定数组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循环访问数组元素,会缺失最后一个元素。
35、下列程序输出的结果是:

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循环和breakcontinue的用法
嵌套for循环,外层执行一次,内层循环执行完整一次break在循环中会终止循环,continue停止本次循环,继续下一次循环。该题目中,外层循环中当i=5的时候,停止,继续下一次循环内层循环每次i=5的时候,循环终止,所以外层整个循环体执行9次内层循环j=5的时候,循环终止,所以内层循环整个循环体执行4次由于是嵌套循环,所以内层循环体共执行9*4=36次,即count自增了36次,结果是36
36、下列程序输出结果是( )

class Super {public static void m1() {System.out.println("m1 in Super");   }public void m2() {System.out.println("m2 in Super"); }
}
class Sub extends Super {public static void m1() {System.out.println("m1 in Sub");    }public void m2() {System.out.println("m2 in Sub");   }
}
public class TestMain {public static void main(String args[]) {Super sup = new Sub();sup.m1();sup.m2();Sub sub = (Sub) sup;sub.m1();sub.m2(); }
}

A.m1 in Sub
m2 in Sub
m1 in Sub
m2 in Sub
B.m1 in Super
m2 in Super
m1 in Sub
m2 in Sub
C.m1 in Sub
m2 in Sub
m1 in Super
m2 in Super
D.m1 in Super
m2 in Sub
m1 in Sub
m2 in Sub
【正确答案】D
【答案解析】静态方法可以被继承和隐藏,而不能够被重写,因此不能实现多态,不能实现父类的引用可以指向不同子类的对象进行多态调用。
37、下面代码输出结果是( )

int x = 0, y = 0;
do {if (x % 3 == 0) {x++;continue;}x++;y = y + x;
} while (x < 4);
System.out.println(y);

A.0
B.3
C.5
D.7
【正确答案】C
【答案解析】本题考查do-while循环
程序推演如下:

x=0,进入循环体,0%3等于0,满足if条件,x++,x值为1,执行continue,本次循环结束,此时x=1,进入while表达式判断,x<4成立,继续下次循环;
x=1,进入循环体,1%3不等于0,不满足if条件,不执行if语句体,x++,x值为2,y=y+x,此时y值为0+2=2;本次循环结束,此时x=2,进入while表达式判断,x<4成立,继续下次循环;
x=2,进入循环体,2%3不等于0,不满足if条件,不执行if语句体,x++,x值为3,y=y+x,此时y值为2+3=5;本次循环结束,此时x=3,进入while表达式判断,x<4成立,继续下次循环;
x=3,进入循环体,3%3等于0,满足if条件,x++,x值为4,执行continue,本次循环结束,此时x=4,进入while表达式判断,x<4不成立,循环结束。
依据以上推演,y值最后为5

38、下列程序输出结果是( )

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初值0a<5结果为true,进入循环体,再进入switch语句,a=0,执行case 0后的语句,没有break语句,程序继续执行case 3后的语句,a=a+1,a值为1。同理,还是没有break语句,程序继续执行case 1case 2后的语句,a=a+2,a值为1+2,结果为3,最后执行defalt语句,将a值再加3结果为6
39、下列选项中能够正确获取到一个元素在数组中首次出现的位置的函数是( )
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
【答案解析】该题目考查自定义方法操作数组
选项B,如果查找的key在数组中不存在return语句不会执行,缺失return语句。选项C,会出现数组下标越界异常。选项D,语法没错误,返回可能是查找的元素,而不是位置。
40、关于以下应用程序的说明,正确的是( )

1. public class   StaticClass
2. {
3.   static  int  x=10;
4.   static  { x+=5;}
5.   public static void main(String[] args)
6.   {7.       System.out.println("x=" + x);
8.   }
9.   static  { x/=3;}
10. }

A.4行与9行不能通过编译,因为缺少方法名和返回类型
B.9行不能通过编译,因为只能有一个静态初始化器
C.编译通过,执行结果为:x=5
D.编译通过,执行结果为:x=3
【正确答案】C
【答案解析】本题考查静态代码块
类中可以有多个static语句块,当类加载的时候依次执行 运行该应用程序的时候,先执行static{x+=5;},此时x值是15。然后执行static{x/=3;},计算结果为x=15/3,结果为```5。

多选题

41、下列正确的表达式是 ( )
A.byte b = 128;
B.boolean b = null;
C.long l=0xfffL;
D.double d =0.9239d;
【正确答案】C,D
【答案解析】本题考查几种基本数据类型的赋值
选项A,byte类型最大值是127。选项B,boolean类型值只有truefalse
42、下列属于JAVA语言的特点是( )
A.跨平台
B.支持多线程
C.面向对象
D.可以直接访问操作系统
【正确答案】A,B,C
【答案解析】JAVA语言具备跨平台性、面向对象、安全性、多线程、简单易用等特性。
43、对如下数组,说法正确的是( )

int [] arr = {12, 23, 34, 45, 56, 67};

A.获取数组中第三个元素的语法是arr[3]
B.获取数组中第三个元素的语法是arr[2]
C.该数组的最后一个元素的下标值为arr.length
D.该数组的最后一个元素的下标值为arr.length-1
【正确答案】B,D
【答案解析】该题目考查数组元素和长度的访问
数组中元素通过其下标访问语法为arr[0],数组中元素下标从0开始。该题目中A,B,都是要求访问第三个元素,数组中第三个元素下标为2,所以B正确。数组元素下标从0开始,数组长度使用length属性获取,所以最后一个元素的下标值为arr.length-1,D选项正确
44、循环统计1到100之间能被7整除的整数的个数,代码输出正确的是:()
A.

int y = 1;
int count = 0;
while (y <= 100) {if (y / 7 == 0)count++;               y++;
}
System.out.println(count);

B.

int y = 1;
int count = 0;
while (y <= 100) {if(y % 7 == 0)count++;                y++;
}
System.out.println(count);

C.

int count = 0;
for (int i = 1; i <= 100; i++){if(i % 7 == 0)count++;
}
System.out.println(count);

D.

int count = 0;
for (int i = 1; i <= 100; i++){if (i / 7 == 0)count++;
}
System.out.println(count);

【正确答案】B,C
【答案解析】题目要求7的整数倍,所以应该选择模的运算
A,D选项都是除的运算
45、下列关于do…while循环说法正确的是:
A.do…while循环,循环体至少执行一次
B.do…while循环和while循环只是语法不同,没区别
C.do…while循环先执行循环体,再执行boolean表达式,如果为true再执行循环体
D.以上说法都正确
【正确答案】A,C
【答案解析】本题考查do....while循环的用法和while循环的区别。
whiledo....while的区别如下:

while循环先判断再执行;
do…while循环先执行一次循环体,再判断。当初始条件不满足循环条件时,while循环一次都不会执行;
do…while循环不管任何情况都至少执行一次。

46、下列程序中不会出现编译错误的是( )
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都使用扩展赋值运算符运算,自动强制转换。
47、如下变量的定义,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后都使用常量,满足语法要求。
48、下列对Java中关键字final的说法正确的是( )
A.关键字final可以修饰类,方法,变量。
B.final修饰的类,称为final类,类中方法必须使用final修饰
C.类中被final修饰的方法,在其子类中不能被重写
D.类中的变量如果使用staticfinal修饰,必须声明同时初始化,不可被改变
【正确答案】A,C,D
【答案解析】本题考查final的用法

final可以修饰类,方法,和变量
final修饰方法,不可以被重写
final修饰类,该类不能被继承
final修饰的变量,为常量,不可改变

选项B,final的类中,没有对方法是否final的限定。
49、请选出属于JDK的组成部分( )
A.支持JAVA程序运行的一组类库
B.JVM
C.支持JAVA程序开发的一组开发工具
D.一组软件测试工具
【正确答案】A,B,C
【答案解析】JDK:JAVA开发工具集,包含JAVA程序的运行环境和辅助JAVA开发的一组开发工具。运行环境又包括一组类库和JVM。
50、在Java接口中,下列选项里有效的方法声明是( )
A.protected void fun();
B.static void fun();
C.void fun();
D.public void fun();
【正确答案】C,D
【答案解析】本题考查接口中方法的定义
接口中的方法都是public的,即使不使用public修饰,默认也是public的。

Java实训-9月月考相关推荐

  1. java实训手册_java实训项目用户手册

    java实训项目用户手册 1 用户手册 第 1章 引言 1.1编写目的编写本手册的主要目的是为了方便使用的用户管理系统能够更加方便使用 此系统,以及更快的掌握JDK,MySQL,MyEclipse使之 ...

  2. 2020年Java实训项目【GUI学生信息管理系统】目录

    Java实训项目1:GUI学生信息管理系统 - 实训概述 Java实训项目2:GUI学生信息管理系统 - 系统概述 Java实训项目3:GUI学生信息管理系统 - 涉及知识点 Java实训项目4:GU ...

  3. Java实训项目:GUI学生信息管理系统(2019)【下】

    Java实训项目:GUI学生信息管理系统(2019)[下] 本篇目录 六.实现步骤 13.应用程序类 14.窗口界面类(JFrame)

  4. Java实训项目:GUI学生信息管理系统(2019)【中】

    Java实训项目:GUI学生信息管理系统(2019)[中] 本篇目录 四.涉及知识点 1.Java基本语法 2.Java流程控制

  5. Java实训项目:GUI学生信息管理系统(2019)【上】

    Java实训项目:GUI学生信息管理系统(2019)[上] 本篇目录 零.实训概述 1.实训目的 2.项目简介

  6. Java实训项目:GUI学生信息管理系统(2017)

    Java实训项目:GUI学生信息管理系统(2017) 实训目的:让学生综合运用J2SE有关知识开发[学生信息管理系统].主要涉及程序控制结构.面向对象编程.图形用户界面.Java数据库应用.MySQL ...

  7. java实训心得感想30字,java实训心得体会感想

    java实训心得体会感想 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.通过本次实训,受益很多,下面谈谈个人的心得体会.本文是java实训心得,希望对大家有帮助. java实训心得篇一 ...

  8. java实训意义_java实习心得体会

    通过java实习,我自身发生了重大的转变,我相信我会在JAVA开发这条路上走的更长更远,分享心得体会.下面是学习啦小编为大家收集整理的java实习心得体会,欢迎大家阅读. java实习心得体会篇1 经 ...

  9. 简单计算器(Java实训)

    简单计算器(Java实训) 实训目的: 掌握 Java GUI 开发中的布局管理和事件处理机制. 实训要求: (1)要使用 java 的 GUI 设计出计算器界面.(2)通过界面 按钮,可以实现整数或 ...

最新文章

  1. 【综述专栏】图神经网络综述
  2. Google Container Engine进军生产环境,容器技术势不可挡
  3. [Head First设计模式]山西面馆中的设计模式——装饰者模式
  4. maven jetty/tomcat/wildfly plugin部署应用到本地容器
  5. 考研【复试技巧】如果复试时太紧张,遇到不会的问题只能凉了吗?这些技巧收下!
  6. VTK:可视化之ExtrudePolyDataAlongLine
  7. QuartusII下verilog设计使用OC8051和VGA两个IP核组成片上系统
  8. 国家开放大学2021春1474临床医学概论(本)题目
  9. Java 集合框架(List、Set、Map、Iterator、Stack、Properties)
  10. 1.4编程基础之逻辑表达式与条件分支_16三角形判断(9分)
  11. 《深度学习笔记》——训练加速篇
  12. HTML从入门到精通
  13. cs6给画笔分组_画笔工具,PS cs6笔刷入门介绍
  14. sap系统和服务器的关系,erp系统和sap系统的区别
  15. 魔兽世界怀旧服最新服务器开发时间,魔兽世界怀旧服明日开放,开服第一天“大部队”能升到多少级?...
  16. 使用Perfmon和PAL工具查看Server性能--PerfMon入门指南
  17. #、##、#@在#define中的用法
  18. 浏览器提示https证书有风险该怎么解决
  19. addSuppressed异常抑制
  20. 计算机网络军训口号,军训口号霸气口号(精选60句)

热门文章

  1. vue列表左右箭头滑动 vue+typescript实现左右箭头翻页,类似轮播图效果
  2. Drilling fluids recycling system for China Trenchless Company
  3. 回家过年咯,祝大家猪年快乐
  4. 如何用云服务器做服务器转发节点,云服务器要怎么用来搭建节点
  5. html文件如何恢复手机短信,如何恢复手机删除的短信?简单方法分享
  6. 简单entries属性的ListView和BaseAdapter的使用
  7. 2019年猪年颁奖典礼、公司年会、跨年晚会、科技会议、年终答谢会之幕布背景展板PSD模板-第三部分...
  8. 二极管电路的分析方法
  9. K8 SEO全能营销--抢沙发,只要是新帖,你就是占沙发
  10. 查看计算机会议 论文,计算机国际会议论文.doc