Java基础面试题(二)

1、final关键字用法(作用)

1)修饰类:表示该类不能被继承。

2)修饰方法:表示该方法不能被重写。

3)修饰变量:表示此变量是常量,只能赋值一次且不能被修改。

2、final、finally、finalize的区别

final:如第一题所示,这里不再重复叙述。 

finally:它是try-catch-finally最后的代码块,最终都会执行,finally可以省略,如果存在则一定会执行里面的代码(发生Error错误等非程序性异常除外)。

finalize:它是Object类的一个方法,在垃圾回收器(GC)执行的时候会自动调用被回收对象的此方法,一般不建议主动使用。

3、Java继承机制

1)Java类与类直接只支持单继承,如下是JDK源码部分截图:

2)Java接口与接口之间支持多继承,如下图:

4、重写和重载

重写重写是父类与子类之间多态的一种表现,即子类可以覆盖从父类继承的方法,重写的方法一般使用@Override标识,如下图:

重载重载是一个类中方法多态的一种表现,即一个类中可以有多个同名的方法,方法的参数类型不同或参数个数不同,返回类型可以相同也可以不同,如下图:

5、Java异常

Throwable

Throwable是Java异常的父(祖先)类,所有的异常都继承这个类,Error类和Exception类是Throwable类的两个子类。

Error

Error类是非程序异常,即程序不能捕获和无法提前预知的异常,一般是程序编译或者系统性的错误,如OutOfMemorry内存溢出异常等。

Exception

Exception异常分为两种:

1)运行时异常:Java编译器不会检查,当程序中可能出现这类异常时,即使没有用try-catch语句捕获,Java也会编译通过,常见的如NullPointerException、lndexOutOfBoundsException。

2)非运行时异常:程序必须进行处理、捕获或者抛出,不处理则编译不通过,常见的如IOException、ClassNotFoundException。

下图为常见异常结构图:

6、throw和throws的区别

throw:用于在方法中主动抛出一个异常,如下图:

throws:用于方法声明中可能会抛出的异常,如下图:

7、Java包装类型

包装类型:包装类型是Java为了解决基本数据类型无法面向对象编程而设计。

如下图展示了Java8种基本数据类型和与之对应的包装类型:

8、int和Integer的区别

主要有以下4种区别

1)int是一种基本数据类型,Integer是int的包装类型。

2)int的默认值是0,Integer属于Java类,默认值是null。

3)int可以直接使用,而Integer需要经过实例化才能使用。

4)Integer的使用范围更广,比如可以用于泛型。

9、自动装箱和自动拆箱

描述:Java 5开始增加了自动装箱和自动拆箱机制,用于提供基本数据类型和包装类型的相互转换的操作。

自动装箱:用于自动将基本数据类型转成对应的包装类型,原理是调用包装类的valueOf()方法。

自动拆箱:用于自动将包装类型转成对应的基本数据类型,原理是调用包装类的xxValue()方法,如iInteger的intValue()方法。

10、理解Java的多态

多态,即“多种状态"的意思,在Java中有以下二种情形:

一、方法多态

1)方法重写:是父类与子类之间多态性的一种表现,即子类可以覆盖从父类继承的方法。

2)方法重载:是一个类中方法多态的一种表现,即一个类中可以有多个同名的方法,方法的参数类型不同或参数个数不同,返回类型可以相同也可以不同。

二、对象多态

1)接口和实现类:接口可以有多种不同的实现形式。

2)抽象类和实现类:抽象类和实现类可以有多种不同的形式。

第二篇基础面试题到此结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值