java测试题(含有答案与解析)

1..Java语言与其他语言相比,独有的特点是(C)

A.面对对象

B.多线程

C.平台无关

D.网络编程

2.静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据。

        答案:正确。

解释:静态内部类可以间接访问外围类的非静态数据(通过实例化外部类的对象,再用对象名了调用)

img

3.有以下程序片段,下列哪个选项不能插入到第一行 。(A)

1.`

2.public class A{

3.//do sth

4.}`

A. public class MainClass{ }

B. package mine;

C. class ANotherClass{ }

D. import java.util.*;

解析:一个源程序只能有一个public类存在,且类名要与文件名相同。Java程序是从main方法开始执行的,而public类为加载器提供了入口,然后找到public类中的main方法开始执行,一个源程序如果存在多个public类,程序将不知道该从哪里执行。

注意:内部类可以是public的,因为内部类是作为外部类的成员存在的

4.对于构造方法,下列叙述正确的是(ACD)

A.构造方法的优先级一般比代码块低

B.构造方法的返回值只能是void型

C.构造方法的主要作用是完成对类的对象的初始化工作

D.一般在创建对象新对象时,系统会自动调用构造方法

5.关于下面代码,运行结果是:

编译错误。

解释:x为非静态成员,而main方法属于静态方法,静态方法不能直接调用非静态成员。

6.下列不能做switch()的参数类型是(C)

A.int

B.字符串

C.浮点型

7.下列说法错误的是(B)

A.类只能继承一个父类,但是可以实现多个接口

B.抽象类自身可以定义成员而接口不可以

C.抽象类和接口都不能被实例化(忽略匿名内部类)

D.一个类可以有多个父类和多个接口

解释:B选项中,java 接口中可以定义成员变量,且必须是 static final的。D选项中,一个类只能有一个父类

7.dk1.8版本之前的前提下,接口和抽象类描述正确的有(B,C)

A. 抽象类没有构造函数

B. 接口没有构造函数

C. 抽象类不允许多继承

D. 接口中的方法可以有方法体

8.以下Java程序运行的结果是(A)

A. 1true

B. 2true

C. 1false

D. 2false

解释:第三行创建了Integer对象var1,并且实例化了。第四行创建var2对象,并将其地址传给了var2,所以“var1==var2”。而第五行调用了domething(var2)方法给对象integer对象实例化,但是这并不影响var1与var2。

9下面的代码输出的结果为正确答案

答案:5

解释:当程序执行时,会先加载静态属性(cnt=6),然后按照先后顺序加载两个静态代码块

10.Java类Demo中存在方法func1、func2、func3和func4,请问该方法中,哪些是不合法

答案:func1、func4

解释:func1方法中没有写放回结果。func4方法中将double转换成float必须是强制类型转换。

11.下列说法正确的是 B

A. 在类方法中可用this来调用本类的类方法

B. 在类方法中调用本类的类方法可直接调用

C. 在类方法中只能调用本类的类方法

D.在类方法中绝对不能调用实例方法

解释:A选项错误,直接调用即可。C、D是错误的,比如main方法就可以调用实例方法,只是不能够直接调用,需要借用“对象.”。

12.下面有关Java的instanceof、三目运算符、&、&&说法正确的是(ABCD)

A. instanceof 可用来判断某个实例变量是否属于某种类的类型。

B. "?:" 三目运算符

C. &在逻辑运算中是非短路逻辑与

D. && 逻辑运算:逻辑与

13不能用来修饰interface的有(ACD )

A. private

B. public

C. protected

D. static

解释:接口是一种特殊的抽象类,接口中的方法全部是抽象方法(但其前的abstract可以省略),所以抽象类中的抽象方法不能用的访问修饰符这里也不能用而且protected访问修饰符也不能使用,因为接口可以让所有的类去实现(非继承),不只是其子类,但是要用public去修饰

14.对于下列代码: 第10行语句将调用哪行语句?

解释:

调用的是第7行的语句。第9行相当于是向上转型,父类的引用指向子类的实例,所以,第10行运行调用的子类重写父类的方法

15.对于下列代码:

下述哪些方法可以加入类Child? (C) 

A. int addValue( int a, int b ){// do something...}

B. public void addValue (int a, int b ){// do something...}

C. public int addValue( int a ){// do something...}

D. public int addValue( int a, int b )throws Exception {//do something...}

解释:此题考的内容为方法的重写与方法的重写。

方法重写的语法规则: 返回值类型、方法名、参数类型、顺序、个数都要与父类继承的方法相同。

方法重载判断原则:
     “两同一不同”:
​
           两同:同类中(也可以是父子类中);方法名相同。
​
           一不同:方法参数列表不同(参数类型、参数个数、参数顺序);
​
                 只要参数类型、参数个数、参数顺序有一个不同、参数列表就不同。
​
     方法重载与返回值类型无关,只是一般要求返回值类型一致。

A选项错误错误,考的是方法的重写但是子类的访问控制权修饰符小于父类的。B选项错误,考的是方法的重写,子类返回值与父类的返回值不同。D选项错误,跑出来异常。

16.运行下列程序,会产生什么结果:

输出为:outer

解释:外部类不能直接访问内部类的成员,必须依靠内部类的实例来访问。

17.下面哪个语句不能定义一个字符变量 (D)

A. char c1=06477;

B. char c2=’\uface’ ;

C. char c4=0xbeef ;

D. char c3=\u0041;

解释:D错误,将Unicode 码转成char类型时需用单引号。

19.在Java中,属于整数类型变量的是(ABCD)

A. short

B. int

C. byte

D. long

20.Java窗体设计程序运行时,在命令行下用_Ctrl + C键可以终止程序的运行。

21.以下代码的输出结果是? ()

  

答案:构造块 构造块 静态块 构造块

解析:当运行main方法后,会去给Test01 类型的对象t 实例化,然后代码会进入类Test01中加载前面两个静态实例,随后会输出两次“构造块”,接着会加载静态代码块输出“静态块”,最后加载普通代码块输出“构造块”。

22.运行代码,输出的结果是()

输出: P is init 123

解析:只输出两句话。当子类类名去调用父类静态成员的时候,不会触发子类的加载。所以“S is init”不会执行。(后输出“123”,是因为“public static int abc = 123;只是类加载,并不是输出”)

23.(判断题)抽象类方法的访问权限默认都是public

答案:错误的

解析:JDk1.8以后是default,1.8之前是public

24.

答案:ABDC

解析:父类只能调用父类或者被子类覆盖后的方法,父类不能单独调用子类方法。

而子类中被子类重写过的方法,只能使用super调用父类方法,子类默认调用的均为子类方法。

  1. 关于匿名内部类叙述正确的是?(B)

    A. 匿名内部类可以继承一个基类,不可以实现一个接口

    B. 匿名内部类不可以定义构造器

    C. 匿名内部类不能用于形参

    D. 以上说法都不正确

    解析:由于构造器的名字必须与类名相同,而匿名类没有类名,所以匿名类不能有构造器

    链接:关于匿名内部类叙述正确的是? ( )__牛客网 来源:牛客网

    在使用匿名内部类的过程中,我们需要注意如下几点:

    1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。

    2、匿名内部类中是不能定义构造函数的。

    3、匿名内部类中不能存在任何的静态成员变量和静态方法。

    4、匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。

    5、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。

26.下面赋值语句中正确的是(A)

A. double d=5.3e10;

B. float f=11.1;

C. int i=0.0;

D. Double oD=3;

解析:B错误,应该是11.1f。C错误,0.0是double类型的,变成int型要强转。D错误,Double是包装类

27.下面对静态数据成员的描述中,正确的是D

A. 静态数据成员可以在类体内进行初始化

B. 静态数据成员不可以被类的对象调用

C. 静态数据成员不受private控制符的作用

D.在public访问权限修饰符下静态数据成员可以直接用类名调用

解析:static数据成员必须在类体之外进行定义。通常在定义时才进行初始化。但是,当类型为const static时的整形时可以在类体内进行初始化。因此A有正确的地方,但是也有错误的情况,因此不选A。

28.下面代码运行结果是? (C)

A. 1

B. 2

C. 3

D.4

解析:注意,静态代码块中的变量x的运行范围只是再静态代码块中。后面定义静态属性x、y时初始化值都为0;在myMethod()方法中,x++是想复制再加一。所以此时的y=0。

29.哪个正确(ACD)

A. abstract类只能用来派生子类,不能用来创建abstract类的对象。

B. final类不但可以用来派生子类,也可以用来创建final类的对象。

C. abstract不能与final同时修饰一个类。

D. abstract类定义中可以没有abstract方法。

30.在java中,下列对继承的说法,正确的是(A)

A. 子类能继承父类的所有成员

B. 子类只能继承父类的非私有方法

C. 子类只能继承父类的public方法

D. 子类只能继承父类的方法

解析:子类能够继承父类的所以方法(包括私有方法,但是不能够调用),但是不能够调用。子类讷讷感狗继承父类的方法和属性。

31.已知如下类说明:如下哪些使用是正确的(D)

A. t.f = 1.0

B. this.n

C. Test.m

D. Test.n

32.设 x = 1 , y = 2 , z = 3,则表达式 y += z-- / ++x 的值是__3_

解释:z--说明时先参与运算再减一,所以z--/++y=3/2=1(因为时int型的)。

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值