1、(单选题)为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为()
A.static void method( )
B.public void method( )
C.final void method( )
D.abstract void method( )
【正确答案】A
【答案解析】public修饰的方法可被其他类访问或引用。abstract修饰的是抽象方法,抽象方法没有方法体,必须先实现此抽象方法才能使用;final修饰的方法不能被继承;static修饰的为静态方法,静态方法不需要类的实例化就可以被类直接调用。
1、(单选题)关于实例方法和类方法,以下描述正确的是( )
A.实例方法只能访问实例变量
B.类方法既可以访问类变量,也可以访问实例变量
C.类方法只能通过类名来调用
D.实例方法只能通过对象来调用
【正确答案】D
【答案解析】实例方法可以访问类变量;类方法只能访问类变量;类方法可以通过对象来调用。
2、(单选题)下列关于修饰符混用的说法,错误的是( )
A.abstract 不能与 final 并列修饰同一个类
B.abstract 类中可以有 private 的成员
C.abstract 方法可以放在 abstract 类或接口中
D.static 方法中能直接使用非 static 的属性
【正确答案】D
【答案解析】静态方法中不能调用外部的非静态成员
3、(单选题)根据以下代码下面选项正确的是():
1. package foo;
2. import java.util.Vector;
3. private class MyVector extends Vector {
4. int i = 1;
5. public MyVector() {
6. i = 2;
7. }
8. }
9. public class MyNewVector extends MyVector {
10. public MyNewVector () {
11. i = 4;
12. }
13. public static void main (String args []) {
14. MyVector v = new MyNewVector();
15. }
16. }
A.代码无编译错误
B.第3行出现编译错误
C.第6行出现编译错误
D.第9行出现编译错误
【正确答案】B
【答案解析】类MyVector不能是私有的
4、在java中,程序为对象动态分配内存,内存分配的运算符是new
5、(单选题)在下面程序的第 7 行补充上下列哪个方法,会导致在编译过程中发生 错误( )
1) class Super{
2) public float getNum(){
3) return 3.0f;
4) }
5) }
6) public class Sub extends Super{
7) // TODO ...
8) }
A.public float getNum(){retun 4.0f;}
B.public void getNum(){}
C.public void getNum(double d){}
D.public double getNum(float d){retun 4.0f;}
【正确答案】B
【答案解析】重写要求方法签名必须相同,返回类型如果是基本类型或无返回值时必须一致。重载要求方法名相同且参数列表必须不同,与返回值类型无关。
6、(单选题)栈是一种( )
A.存取受限的线性结构
B.存取不受限的线性结构
C.存取受限的非线性结构
D.存取不受限的非线性结构
【正确答案】A
【答案解析】栈在计算机科学中定义是仅在表尾进行插入或删除的线性表。
7、(多选题)下面选项中哪两个可以在 A 的子类中使用( ) class A { protected int method1 (int a, int b) { return 0; } }
A.public int method1(int a, int b) { return 0; }
B.private int method1(int a, int b) { return 0; }
C.private int method1(int a, long b) { return 0; }
D.public short method1(int a, int b) { return 0; }
【正确答案】A,C
【答案解析】A是重写,B是重写,子类重写父类中方法权限不能比父类低。C是重载,D是重写,重写时返回类型如果是基本类型或无返回值必须一致。
8、(多选题)以下哪个选项可以替换第2行位置的代码,且替换后效果相同() 1. public interface Foo{ 2. int k = 4; 3. }
A.final int k = 4;
B.public int k = 4;
C.static int k = 4;
D.abstract int k = 4;
【正确答案】A,B,C
【答案解析】接口中的属性都是常量,默认由public static final修饰,可以省略,abstract不能修饰变量。
9、(多选题)不能用来修饰 interface 的有( )
A.private
B.public
C.protected
D.static
【正确答案】A,C,D
【答案解析】修饰接口可以是public或默认。
10、(多选题)在JAVA 8.0版本之前,接口中可以定义( )。
A.静态方法
B.常量
C.构造方法
D.抽象方法
【正确答案】B,D
【答案解析】接口中只能定义常量和抽象方法
11、(多选题)面向对象的主要特征有哪些()
A.封装
B.多态
C.继承
D.抽象
【正确答案】A,B,C
【答案解析】面向对象的三大特征:封装,多态和继承。
12、(单选题)从下面四段(A,B,C,D)代码中选择出正确的代码段( )
A.abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {} }
B.public class Something { void doSomething () { private String s = ""; int l = s.length(); } }
C.public class Something {
public static void main(String[] args) {
Other o = new Other(); new Something().addOne(o); }
public void addOne(final Other o) { o.i++; } }
class Other { public int i; }
D.public class Something { public int addOne(final int x) { return ++x; } }
【正确答案】C
【答案解析】A抽象方法中不能定义方法体;B方法中定义的是局部变量,不能用类成员变量修饰符private;D常量不能被修改
13、(单选题)已知如下代码,下列选项中哪个表达式会编译出错( )
interface IFace{}
class CFace implements IFace{}
class Base{} public
class ObRef extends Base{
public static void main(String argv[]){
ObRef ob = new ObRef(); Base b = new Base(); Object o1 = new Object(); IFace o2 = new CFace(); } }
A.o1=o2;
B.b=ob;
C.ob=b;
D.o1=b;
【正确答案】C
【答案解析】b是ob的父类,将父类的引用赋值到子类引用变量上面要加强制类型转换。
14、(单选题)在JAVA中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是( )。
A.interface A extend B,C
B.interface A implements B,C
C.class A implements B,C
D.class A implements B, implements C
【正确答案】C
【答案解析】因为是类实现,所以用class,implements只需要写一次。
15、(单选题)关于以下程序代码的说明正确的是( ) 1.class HasStatic{ 2. private static int x=100; 3. public static void main(String args[ ]){ 4. HasStatic hs1=new HasStatic(); 5. hs1.x++; 6. HasStatic hs2=new HasStatic(); 7. hs2.x++; 8. hs1=new HasStatic(); 9. hs1.x++; 10. HasStatic.x--; 11. System.out.println("x="+x); 12. } 13.}
A.5 行不能通过编译,因为引用了私有静态变量
B.10 行不能通过编译,因为 x 是私有静态变量
C.程序通过编译,输出结果为:x=103
D.程序通过编译,输出结果为:x=102
【正确答案】D
【答案解析】静态变量是所有对象共享,上面几个对象操作的是同一个静态变量,静态变量可以直接用类名调用。
16、当子类隐藏了父类的变量,并重写父类的方法时,又要使用父类的变量或父类重写的方法时,可通过super来实现对父类变量或父类方法的调用。super用来引用当前对象的父类。
10、(单选题)以下程序的运行结果是() 1. public static void main(String[] args) { 2. Object obj = new Object() { 3. public int hashCode() { 4. return 42; 5. } 6. }; 7. System.out.println(obj.hashCode()); 8. }
A.42
B.运行时出错
C.第2行位置编译出错
D.第7行位置编译出错
【正确答案】A
【答案解析】匿名内部类中已覆盖了hashcode方法。
16、(多选题)下列说法错误的有( )
A.在类方法中可用 this 来调用本类的类方法
B.在类方法中调用本类的类方法时可直接调用
C.在类方法中只能调用本类中的类方法
D.在类方法中绝对不能调用实例方法
【正确答案】A,C,D
【答案解析】A在类方法中不能使用this关键字;C在类方法中可调用其他类中的类方法,D在类方法中可以通过实例化对象来调用来调用实例方法
17、(多选题)下面关于变量及其范围的陈述哪些是不正确的( )
A.类中的普通属性是类的实例变量
B.实例变量用关键字static声明
C.局部变量在局部范围外也可以被使用
D.局部变量在使用前必须被初始化
【正确答案】B,C
【答案解析】Bstatic修饰的是类变量或静态变量,D局部变量只能在局部范围内被使用。
18、修饰接口可以是public或默认。
19、(多选题)已知下列选项中的方法是在某个类中定义的,现在子类中不可以定义与下列选项中方法签名相同的方法的选项是( )
A.final void methoda() {}
B.void methoda() {}
C.static void methoda() {}
D.static final void methoda() {}
【正确答案】A,D
【答案解析】final修饰方法在子类中不能被重写。
20、(单选题)以下程序正确的输出是( ) package test.father; public class FatherClass { public FatherClass() { System.out.println("FatherClass Create"); } } package test.child; import test.father.FatherClass; public class ChildClass extends FatherClass { public ChildClass() { System.out.println("ChildClass Create"); } public static void main(String[] args) { FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass(); } }
A.FatherClass Create FatherClass Create ChildClass Create
B.FatherClass Create ChildClass Create FatherClass Create
C.ChildClass Create ChildClass Create FatherClass Create
D.ChildClass Create FatherClass Create
【正确答案】A
【答案解析】子类的构造方法开始默认有一句super()来调用父类的构造方法。
21、(单选题)下列关于修饰符混用的说法,错误的是( )
A.abstract 不能与 final 并列修饰同一个类
B.abstract 类中可以有 private 的成员
C.abstract 方法可以放在 abstract 类或接口中
D.static 方法中能直接使用非 static 的属性
【正确答案】D
【答案解析】static方法不能引用其外部的非静态属性
22、(单选题)关于以下说法正确的是( ) 1.class StaticStuff 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
【答案解析】静态初始化块是在类加载时会执行到的,按照在类中出现的先后顺序执行。
23、(单选题)下述代码的执行结果是( ) class Super { public int getLength() { return 4; } } public class Sub extends Super { public long getLength() { return 5; } public static void main (String[] args) { Super sooper = new Super (); Super sub = new Sub(); System.out.println(sooper.getLength() + "," + sub.getLength()); } }
A.4,4
B.4,5
C.5,4
D.代码不能被编译
【正确答案】D
【答案解析】方法重写如果返回值是基本类型或void类型应与父类的一致。
24、(单选题)下列哪一种叙述是正确的( )
A.abstract 修饰符可修饰字段、方法和类
B.抽象方法的 body 部分必须用一对大括号{ }包住
C.声明抽象方法,大括号可有可无
D.声明抽象方法不可写出大括号
【正确答案】D
【答案解析】A abstract可以修饰方法和类,不能修饰属性;D抽象方法没有方法体,即没有{}
25、(多选题) 下列变量命名哪个是合法的()
A.class
B.$abc
C.1234
D._name
【正确答案】B,D
【答案解析】变量命名不能全是数字.static修饰的是静态变量或类变量
26、java是从C++语言改进重新设计。
27、(单选题)执行完以下代码 int [ ] x = new int[25]; 后, 以下哪项说明是正确的( )
A.x[24]为 0
B.x[24]未定义
C.x[25]为 0
D.x[0]为空
【正确答案】A
【答案解析】int[]属于引用类型,该引用类型的每一个成员属于int类型,默认值为0.
28、(单选题)在创建对象时,必须( )
A.先声明对象,然后才能使用对象
B.先声明对象,为对象分配内存空间,然后才能使用对象
C.先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象
D.上述说法都对
【正确答案】C
【答案解析】对象是先声明,声明后会给对象分配内存空间,之后初始化,再进行使用
29、(单选题)已知类 Teacher 和 Student 都是类 Person 的子类,则对于下列代码说法正确的是( ) Person t = new Teacher(); if (t instanceof Teacher){ Student s = (Student)t; }
A.将构造一个 Student 对象
B.将构造一个 Teacher 对象
C.编译出错,且运行时出错
D.编译正确,且运行时出错
【正确答案】D
【答案解析】instanceof是一个二元运算符,它的作用是测试左边的对象是否是它右边类的实例,返回Boolean类型的数据,teacher与student之间没有继承关系,不能做强制类型转换。
30、(单选题)下列有关实参和形参说法正确的是()
A.形参是指在定义方法时参数列表中的参数 实参是指在调用方法时所传入的实际数据
B.形参变量的作用域是在整个类中都可以使用
C.实参只能是字面量值不可以是变量
D.形参不可以用 final 修饰
【正确答案】A
【答案解析】形参始指定义方法时参数列表中的参数,实参是调用方法时所传入的实际数据。形参是局部变量,只能在方法体中使用,出了方法体不可见,实参可以是字面量值也可以是变量,只要在方法调用时可以传入的数据就是实参,形参可以用final修饰,被final修饰后的形参被赋初值后不可以被改变。
31、(单选题)已知表达式 int m [ ] = {0, 1, 2, 3, 4, 5, 6}; 下面哪个表达式的值与数组下标量总数相等( )
A.m.length()
B.m.length
C.m.length()+1
D.m.length+1
【正确答案】B
【答案解析】m.length,没有括号。
32、(单选题)接口是 Java 面向对象的实现机制之一,以下说法正确的是( )
A.Java 支持多重继承,一个类可以实现多个接口
B.Java 只支持单重继承,但一个类可以实现多个接口
C.Java 只支持单重继承,一个类只可以实现一个接口
D.Java 支持多重继承,但一个类只可以实现一个接口
【正确答案】B
【答案解析】java支持单继承,一个类只能继承自另一个类,但一个类可以实现多个接口。
33、(单选题)以下代码的执行结果是() public class Test { private static float[] f = new float[2]; public static void main(String args[]) { System.out.println("f[0] = " + f[0]); } }
A.f[0] = 0
B.f[0] = 0.0
C.代码不能通过编译
D.程序运行时出错
【正确答案】B
【答案解析】float[]型的数组元素都是float,默认初始值是0.0
34、(单选题)关于实例方法和类方法,以下描述正确的是( )
A.实例方法只能访问实例变量
B.类方法既可以访问类变量,也可以访问实例变量
C.类方法只能通过类名来调用
D.实例方法只能通过对象来调用
【正确答案】D
【答案解析】实例方法可以访问类变量,类方法只能访问类变量,类方法可以通过对象调用
35、(单选题)Java编程语言之父是()
A.James Gosling
B.Abigail
C.Brutus
D.以上选项都不对
【正确答案】A
【答案解析】詹姆斯.高斯林,出生于加拿大,被称为java之父
36、(单选题)在控制台运行一个 Java 程序 TestDemo . class ,使用的命令正确的是( )
A.java TestDemo. class
B.javac TestDemo. class
C.java TestDemo
D.javac TestDemo
【正确答案】C
【答案解析】java命令程序执行字节码文件不能跟文件名后缀。
37、(单选题)选择下面代码的运行结果:( ) public class Test{ public void method(){ for(int i = 0; i < 3; i++){ System.out.print(i); } System.out.print(i); } }
A.0122
B.0123
C.编译错误
D.没有任何输出
【正确答案】C
【答案解析】i变量的作用范围在for循环中。
38、(单选题)下列数组的初始化正确的是()
A.int[ ] score = new int[ ];
B.int score[ ] = new int[ ] { 34, 90, 87, 54, 24 };
C.int[ ] score = new int[ 4 ] { 90, 12, 34, 77 };
D.int score = { 78, 23, 44, 78 };
【正确答案】B
【答案解析】A需要指定数组的长度,C在数组声明的同时赋值时不能指定数组长度,D语法错误,应为int[] score ={78,23,44,78}
39、(单选题)编译运行以下程序后,关于输出结果的说明正确的是( ) publicclass Conditional{ publicstaticvoid main(String args[]){ int x=4; System.out.println("value is "+ ((x>4) ? 99.9 : 9)); } }
A.输出结果为:value is 99.99
B.输出结果为:value is 9
C.输出结果为:value is 9.0
D.编译错误
【正确答案】C
【答案解析】三目运算符第二个表达式和第三个表达式如果都为基本类型,整个表达式的运算结果由容量高的决定,所以运算结果是double类型的。
40、(多选题)下列选项中创建数组能够编译通过的是( )
A.int[] ia = new int [15];
B.float fa = new float [20];
C.char[] ca = "Some String";
D.Object oa = new float[20];
【正确答案】A,D
【答案解析】任何类的父类都是Object,数组属于引用类型,这种写法相当于把父类的引用指向子类的实例。