java笔试题含答案总结一

1、以下关于java封装的描述中,正确的是:
A、封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性
B、封装的意义不大,因此在编码中尽量不要使用
C、如果子类继承父类,对于父类中进行封装的方法,子类仍然可以直接调用
D、只能对一个类中的方法进行封装,不能对属性进行封装

答案:A
关于封装:
封住、继承、多态是面向对象的三大特征,其重要性与使用频率不言而喻。------所以B错误。
什么是封装?
封装就是将属性私有化,提供公有的方法访问私有属性。------------------- 所以CD错误。

做法就是:修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值( getter )方法和赋值( setter )方法,用于对这些属性的访问。
 为什么需要封装?
    通过封装,可以实现对属性的数据访问限制,同时增加了程序的可维护性。

   由于取值方法和赋值方法隐藏了实现的变更,因此并不会影响读取或修改该属性的类,避免了大规模的修改,程序的可维护性增强

2、 以下关于final关键字说法错误的是(A,C)(两项)

A) final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性

B) final修饰的类肯定不能被继承

C) final修饰的方法不能被重载

D) final修饰的变量不允许被再次赋值

1.final修饰变量,则等同于常量
2.final修饰方法中的参数,称为最终参数。
3.final修饰类,则类不能被继承
4.final修饰方法,则方法不能被重写。

 final 不能修饰抽象类

final修饰的方法可以被重载 但不能被重写

3、以下(D)不是Object类的方法

A) clone()

B) finalize()

C) toString()

D) hasNext()
  
4、多态的表现形式有(A)

A) 重写

B) 抽象

C) 继承

D) 封装  
  
5、以下(D)添加到ComputerBook中不会出错

class Book{

  protected int getPrice(){

  return 30;

  }

  }

  public class ComputerBook extends Book{

  }

  A) protected float getPrice(){}

  B) protected int getPrice(int page){}

  C) int getPrice(){}

  D) public int getPrice(){return 10;}

6、 以下对抽象类的描述正确的是©

A) 抽象类没有构造方法

B) 抽象类必须提供抽象方法

C) 有抽象方法的类一定是抽象类

D) 抽象类可以通过new关键字直接实例化


 选项A错误,抽象类可以包含普通方法。

选项B错误,Java中的继承是单继承,一个子类最多只能有一个父类。

抽象类到底能不能被实例化是初学者很容易犯的错误,抽象类确实有构造方法,但这个构造方法是用来被子类调用的,因为任何子类都必须调用从Object开始的所有父亲的构造方法,才算完成初始化工作。如果抽象类被实例化,就会报错,编译无法通过。而接口里不包含构造器,自然无法被实例化。因此选项C错误,选项D正确

7、 以下程序运行结果是(A)

public class Test extends Father{

private String name=”test”;

public static void main(String[] args){

Test test = new Test();

System.out.println(test.getName());

}

}

class Father{

private String name=”father”;

public String getName() {

return name;

}

}

A) father

B) test

C) 编译出错

D) 运行出错,无输出

Test test = new Test();时初始化Father,Father中的getName方法得到值“father”,Test的print调用getName方法并输出father。

8、在try-catch-finally语句块中,以下可以单独与finally一起使用的是(B)

A) catch

B) try

C) throws

D) throw

使用 try-catch-finally 语句时需注意以下几点:
异常处理语法结构中只有 try 块是必需的,也就是说,如果没有 try 块,则不能有后面的 catch 块和 finally 块;
catch 块和 finally 块都是可选的,但 catch 块和 finally 块至少出现其中之一,也可以同时出现;
可以有多个 catch 块,捕获父类异常的 catch 块必须位于捕获子类异常的后面;
不能只有 try 块,既没有 catch 块,也没有 finally 块;
多个 catch 块必须位于 try 块之后,finally 块必须位于所有的 catch 块之后。
finally 与 try 语句块匹配的语法格式,此种情况会导致异常丢失,所以不常见。

9、下面代码运行结果是(B)

public class Demo{

public int add(int a,int b){

try{

return a+b;

}catch(Exception e){

System.out.println(“catch 语句块”);

}finally{

System.out.println(“finally 语句块”);

}

return 0;

}

public static void main(String[] args){

Demo demo = new Demo();

System.out.println(“和是:”+demo.add(9,34));

}

}

A) 编译异常

B) finally语句块 和是:43

C) 和是:43 finally语句块

D) catch语句块 和是:43

 尽管try语句块中有return,还是会执行finally语句块。

看到了合理的解释是,在try中执行到return语句时,不会真正的return,即只是会计算return中的表达式(本题为执行a+b),之后将结果保存在一个临时栈中,接着执行finally中的语句,最后才会从临时栈中取出之前的结果返回。

10、以下对自定义异常描述正确的是©

A) 自定义异常必须继承Exception

B) 自定义异常可以继承自Error

C) 自定义异常可以更加明确定位异常出错的位置和给出详细出错信息

D) 程序中已经提供了丰富的异常类,使用自定义异常没有意义

自定义异常可以继承Exception也可以继承Exception的子类。
Error类是与Exception类平行的一个类,这两个类都是继承了Throwable类的,它主要处理一些不能由try和catch子句捕获的异常,例如ThreadDeath异常,虽然是一种常见的异常,但是并不是一般的try和catch子句可以捕获的,所以自定义异常不可以继承自
Error 。
我们在日常进行程序设计的时候,java提供的内置异常类型可能不满足我们的设计需求,那么我们就需要设计自己的自定义异常类型,来满足我们的需求设计。
自定义异常可以更加明确定位异常出错的位置和给出详细出错信息,这句是没有错误的。

11、 以下对自定义异常描述正确的是©

A) 自定义异常必须继承Exception

B) 自定义异常可以继承自Error

C) 自定义异常可以更加明确定位异常出错的位置和给出详细出错信息

D) 程序中已经提供了丰富的异常类,使用自定义异常没有意义

自定义异常是Java提供的内置异常类型不能满足程序设计的需求,这时我们可以自己设计 Java 类库或框架,其中包括异常类型
12、关于抽象类说法以下哪两个是正确的?(A,D )
A. 抽象类可以被抽象类所继承
B. 抽象类可以为final的
C. 如果一个非抽象类从抽象类中派生,不一定要通过覆盖来实现继承的抽象成员
D. 抽象类中可以不存在任何抽象方法

抽象类必须要被覆盖,才能实现继承成员函数,所以不能被final所修饰。final所修饰的是:
用final修饰变量是常量,修饰的类不能被继承,修饰的方法不能重写

13、哪个不是JDBC用到的接口和类(C)
A. Statement
B. ResultSet
C. Serialization
D. Connection
14、下面哪个异常是运行时异常(D)
A. ClassNotFoundException
B. NoSuchMethodException
C. IllegalAccessException
D. NullPointerException

这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值