Java基础面试题(含答案)

作者:公众号JavaWeb学习笔记
转载链接:原文

1.面向对象有哪些特性?

封装,继承,多态,抽象。
默认情况是前面三种,如果面试官问4大特性就把抽象加上。
抽象:将一类对象的共同特征总结出来的构造类的过程。

2、访问修饰符public、private、protected、default的区别?

public:当前类,同包,子类,其他包
protected:当前类,同包,子类
default:当前类,同包
private:当前类

3、Java有没有goto语句 ?

没有,但是goto是保留字

4、运算符&和&&的区别?

&:按位与和逻辑与
&&:短路与。

二者都要求运算符两端都为true,整个表达式才为true。但是&&如果左边为false,就不用判断右边了。

5、String,StringBuffer,StringBuilder的区别?

String是只读字符串,引用的字符串内容是不能被改变的。

StringBuffer和StringBuilder的字符串对象可以直接进行修改。StringBuilder是线程安全的,理论上效率比StringBuffer高。

6、short s1 = 1; s1=s1+1;有错吗?short s1=1;s1+=1;有错吗?

前者不正确,后者正确。

因为1为int类型,所以s1+1也是int类型,需要强制类型转换才能赋值给short。而s1+=1;就可以编译通过,相当于s1=(short)s1+1;隐含了类型转换。

7、抽象类与接口有什么异同?

相同点:1)不能被实例化 2) 一个类继承了抽象类或实现了接口,需要实现其中全部的抽象方法。

不同点:

抽象类里的方法可以是抽象发方法和具体方法,接口里的方法只有抽象方法

抽象类的方法可以是public/private/protected等,接口的方法只能是public

抽象类可以有静态方法,接口不能有静态方法

抽象类可以定义变量,接口中的变量实际上都是常量

一个类只能继承一个抽象类,一个类可以实现多个接口

8、final 、finally 、finalize 的区别?

final :用于声明属性,方法和类分别表示不可变覆盖被其修饰的继承。

finally:异常处理语句结构的一部分,表示总是执行。

finalize :Object类的一个方法 ,在垃圾回收器执行时候会调用被对象此可以覆盖类的一个方法,例如关闭文件等。

9、Math.round(11.5) 等于多少? Math.round( - 11.5)又等于多少?

Math.round(11.5)的返回值是12,

Math.round( - 11.5) 的返回值是-11 。

四舍五入的原理是在参数上加0.5然后取整。

10、error和exception的区别?

Error类和Exception类的父类都是Throwable类.

Error类一般指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存不足,方法调用溢出等。对于这类错误导致的程序中断,仅靠程序员本身无法恢复和预防,遇到这样的错误,建议让程序终止。

Exception类表示程序可以处理的一城,可以捕获且可以恢复。

你可能感兴趣的:(Java基础面试题(含答案))